我正在使用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
时一切正常。
知道什么可能出错吗?
答案 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
只返回一个值TRUE
或FALSE
),与您的行数不匹配data.table对象。