Имена столбцов смещаются влево на read.table или read.csv
Первоначально у меня есть этот файл TSV (образец):
name type qty
cxfm 1C 0
d2 H50 2
g3g 1G 2
hb E37 1
nlx E45 4
поэтому я использую read.csv для чтения данных из файла.tsv, но я всегда получаю такой вывод:
name type qty
1 cxfm 1C 0
2 d2 H50 2
3 g3g 1G 2
4 hb E37 1
5 nlx E45 4
вместо того, чтобы получить это:
name type qty
1 cxfm 1C 0
2 d2 H50 2
3 g3g 1G 2
4 hb E37 1
5 nlx E45 4
Есть идеи, это? это то, что я использую для чтения файлов:
file_list<-list.files()
for (file in file_list){
if (!exists("dataset")){
dataset <- read.table(file, header = TRUE, sep = "\t", row.names = NULL, blank.lines.skip = TRUE, fill = TRUE)
names(dataset) <- c("rowID", names(dataset)[1:ncol(dataset)-1])
}
if (exists("dataset")){
temp_dataset <- read.table(file, header = TRUE, sep = "\t", row.names = NULL, blank.lines.skip = TRUE, fill = TRUE)
names(temp_dataset) <- c("rowID", names(temp_dataset)[1:ncol(temp_dataset)-1])
dataset <- rbind(dataset, temp_dataset)
rm(temp_dataset)
}
}
dataset <- unique(dataset)
write.table(dataset, file = "dataset.tsv", sep = "\t")
2 ответа
Решение
Это то, что я должен был сделать, чтобы это исправить: установите row.names в FALSE
write.table(dataset, file = "data.tsv", sep = "\t", row.names = FALSE)
В исходном CSV-файле отсутствует заголовок столбца. Одним из вариантов здесь будет оставить свой read.csv()
вызовите как есть и просто настройте имена результирующего фрейма данных:
df <- read.csv(file,
header = TRUE,
sep = "\t",
row.names = NULL,
blank.lines.skip = TRUE,
fill = TRUE,
comment.char = "",
quote = "", stringsAsFactors = FALSE)
names(df) <- c("rowID", names(df)[1:ncol(df)-1])