Имена столбцов смещаются влево на 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])
Другие вопросы по тегам