这是我的.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)
这会产生以下错误:
列数多于列名 另外:警告信息: header和'col.names'的长度不同
第一行作为左上角的空单元格,这不应该是标题吗? 当我有一个标题时,为什么我不能将第1列设置为row.names?
谢谢!
答案 0 :(得分: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选项的情况下进行测试
要直接读取整个数据框,外部文件通常会有一个特殊的形式。
文件的第一行应该有数据框中每个变量的名称。
文件的每个附加行都有第一项作为行标签和每个变量的值。
我想说的是,该注释表明,如果第一列没有列名,则程序难以解释数据。如果没有列标题,如何命名数据?
答案 1 :(得分: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
作为列名。如果这是可以接受的,那么你可以坚持这一点;但如果不是,您的数据可能需要再次融化或修改,但为此建议您,我们需要知道您希望生成哪些数据框。