列名在read.table或read.csv上向左移动

列名在read.table或read.csv上向左移动,r,data-analysis,read.table,read.csv,R,Data Analysis,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

最初我有这个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")

源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])

我必须这样做才能修复它:将row.names设置为FALSE

write.table(dataset, file = "data.tsv", sep = "\t", row.names = FALSE)

你试过row.names=False吗?@Erin我想提出这个建议,但也许他想保留行名。哦,对了!实际上,我认为row.names=1可能会起作用。这将告诉R头的第一个元素对应于csv中的第二列…我将row.names=NULL,因为我在第一列中有重复的值以避免出现此错误:不允许重复的“row.names”我这样做了,现在我在NameDataSet中出现此错误抱歉,使用这个:namesdf非常感谢,但是现在我有一个“match.namesclab,namesxi:names与以前的名称不匹配”错误,那么您的R脚本中肯定还有其他问题。如果你发布相关代码,我可能会提供帮助。将此代码放在你的问题中,而不是作为注释。从文件中读取每个数据集数据帧后,您计划如何处理它?这个代码片段显示您正在覆盖每一个,这对我来说没有太大意义。这是对原始问题的直接回答。