在R中子集ffdf对象

Ken*_*ams 10 r ff

我正在使用R的ff包,我有一些ffdf我需要使用的对象(尺寸大约1.5M x 80).虽然我在高效的切片/切割操作中遇到了一些麻烦.

例如,我有两个名为"YEAR"和"AGE"的整数列,我想在YEAR是2005年时创建一个AGE表.

一种方法是:

ffwhich <- function(x, expr) {
  b <- bit(nrow(x))
  for(i in chunk(x)) b[i] <- eval(substitute(expr), x[i,])
  b
}
bw <- ffwhich(a.fdf, YEAR==1999)
answer <- table(a.fdf[bw, "AGE"])
Run Code Online (Sandbox Code Playgroud)

table()操作速度快,但建设的位向量是相当缓慢.任何人都有更好的建议吗?

小智 0

不熟悉操作ff对象,但您描述的问题听起来像是一个经典tapply()任务:

answer <- tapply(a.fdf$YEAR[a.fdf$YEAR == 1995], a.fdf$AGE[a.fdf$YEAR == 1995], length)
Run Code Online (Sandbox Code Playgroud)

我认为类似的东西会比上面给出的两步解决方案移动得更快,但也许我误解了ff数据结构的工作原理?