更换read.csv后,用fread错误的维数出现错误

时间:2016-11-24 13:10:16

标签: r csv data.table

我正在使用plain加载我的csv文件:

baseData <- read.csv(datafile)

但是当我想加载更大的数据集时,我已经转移到data.table package

baseData <- fread(input = paste("zcat < ", datafile, sep=""))

似乎一切正常,数据加载速度更快,但是当我点击以下行时:

d <- baseData[baseData$some_prop==0,]
d <- d[!is.na(d[,"col"]) & (d[,"col"] == 0 | d[,"col"] == 1),]

我收到incorrect number of dimensions

的错误

使用read.csv时一切正常。 知道什么可能出错吗?

1 个答案:

答案 0 :(得分:1)

在data.table中,子集的j部分意味着返回一个新值,并且不应引用列名称,或者您将获得这个值。

示例:

>d<-data.table(A=1:5,B=5:10)
> d[,A]
[1] 1 2 3 4 5 1
> d[,B]
[1]  5  6  7  8  9 10
> d[,"B"]
[1] "B"

因此,对于特定情况,删除列名称周围的引号应该可以修复错误。

如果您的代码很长并使用data.frame方法,则可以在重构之前使用setDF(d)使其按原样运行。

要完成,会出现错误,因为您的逻辑语句长度为1("col" == whatever只返回一个值TRUEFALSE),与您的行数不匹配data.table对象。