2014-02-14 39 views
1

这很烦人,我无法理解什么是错的?read.table row.names&col.names错误

这是我的.csv文件:

  D102-A1 D102-A2 
A1BG  0.32 0.39 
A1BG-AS1 0.08 0.14 

实际看:
; D102-A1; D102-A2
A1BG; 0.32; 0.39
A1BG-AS1; 0.08; 0.14

这是我的代码:

x <- read.table(file = "file.csv", sep = ";", header = TRUE, col.names = 1) 

这给了这些错误:

更多的列比列名 此外:警告消息: 头和“col.names”是不同的长度

第一行作为左上角空单元格的,如果不是这种报头? 当我有一个标题时,为什么我不能将第1列设置为row.names?

谢谢!

+2

csv文件具有逗号分隔值(CSV),您的代码建议分隔符是分号。 – PyNEwbie

+0

如果分隔符正确,它应该是row.names而不是col.names – Ananta

+1

@PyNEwbie:分号常用于csv文件,逗号用于小数点。 –

回答

1

我不确定,因为我从来没有使用R,但我正在查看手册页http://cran.r-project.org/doc/manuals/R-intro.html#The-read_002etable_0028_0029-function,它表明如果没有行标签,您需要所有数据列的列标题。

你尝试过:

read.table(file = "file.csv", sep = ";") 

,然后看了看结果?

这让我觉得你需要无colnames选项

直接读取整个数据帧进行测试,外部文件通常有一种特殊形式。

该文件的第一行应该为数据框中的每个变量指定一个名称。

该文件的每一行都有第一个项目的行标签和每个变量的值。

我试图做的一点是,该注意事项表明,如果没有第一列的列名称,程序就难以解释数据。如果没有列标题,数据将如何命名?

0

?read.table起,可选参数col.names是该列名称的向量。因此,通过指定col.names = 1,您是说有一个列名称为1

为了解决这个问题,你可以删除col.names参数

test1 <- ";D102-A1;D102-A2 
A1BG;0.32;0.39 
A1BG-AS1;0.08;0.14" 
tf <- tempfile() 
writeLines(test1, tf) 

x <- read.table(tf, sep=";", header=TRUE) 

然而,这给你留下一个X作为第一个“细胞”列名。如果这是可以接受的,那么你可以坚持下去;但如果不是这样,您的数据可能需要再次融化或修改,但为了向您提出建议,我们需要知道您希望生成的数据帧。