使用fread读取带有行和列名称的文件

9

如何使用fread读取包含行和列名称的CSV文件,以下是我尝试过的方法,但它无法正确读取行和列名:

CSV文件的格式如下(其中C1、C2、C3是列名称,r1、r2、r3是行名称):

input = ",C1,C2,C3
r1,A,B,C
r2,1,3,5
3,2,4,6"

我使用函数。
require(data.table)
fread(input,header = TRUE)

提供的功能
   r1 A B C
1: r2 1 3 5
2:  3 2 4 6

如何使用fread正确读取CSV文件?


你尝试过在使用read.csv时添加row.names = 1吗?如果没有,你应该看一下?read.csv - Eric Fail
@EricFail - 抱歉我对R/data.table还不熟悉.. 它与read.csv有什么关系? - d.putto
请查看这个SO帖子 - Eric Fail
1
我想使用 fread,因为我的数据文件很大,不想使用 read.csv。 - d.putto
这个问题似乎在v1.9.3中得到了解决。 - Arun
1个回答

5

您应该提交一个错误报告。

这里有一个解决方法:

colnames <- strsplit(readLines(textConnection(input), n=1), ",")[[1]]
colnames[1] <- "rownames"
setnames(DT <- fread(input, skip=1, header=FALSE), colnames)
DT
#   rownames C1 C2 C3
#1:       r1  A  B  C
#2:       r2  1  3  5
#3:        3  2  4  6

您应该知道,data.table不支持行名称。


@d.putto,如果fread()在这种情况下仍然更快,那将是很有趣的。 - Eric Fail
1
@EricFail 当然是针对一个相当大的文件。您似乎不太了解fread(和data.table)。 - Roland
我不知道。直到50分钟前我才听说过fread。我来这里是为了学习。谢谢。 - Eric Fail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接