我正在使用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"])
该table()操作速度快,但建设的位向量是相当缓慢.任何人都有更好的建议吗?
小智 0
不熟悉操作ff对象,但您描述的问题听起来像是一个经典tapply()任务:
answer <- tapply(a.fdf$YEAR[a.fdf$YEAR == 1995], a.fdf$AGE[a.fdf$YEAR == 1995], length)
我认为类似的东西会比上面给出的两步解决方案移动得更快,但也许我误解了ff数据结构的工作原理?