如何使用ffdf应用或sapply或lapply?

时间:2014-02-19 15:51:08

标签: r bigdata

有没有办法直接使用apply类型构造到ffdf对象的列?我试图计算每列中的NA,而不必将其转换为标准数据帧。我可以使用以下方法获取各列的na计数:

sum(is.na(ffdf$columnname))

但有没有办法一次对数据框中的所有列执行此操作,如:

lapply(ffdf, function(x){sum(is.na(x))})

当我跑步时,我得到:

$virtual
[1] 0

$physical
[1] 0

$row.names
[1] 0

我无法在ff文档中找到特殊版本的lapply或sapply。还有一种简单的方法可以一次性计算整个ffdf的NA吗?

1 个答案:

答案 0 :(得分:5)

ffdf基本上是一个包含元素“virtual”,“physical”,“row.names”的列表。 如果你对物理元素进行了一次补偿,你就拥有了自己想要的东西。

require(ffbase)
myffdf <- as.ffdf(iris)
lapply(physical(myffdf), FUN=function(x) sum(is.na(x)))

因为is.na和sum是通用的,所以这将基本上使用来自包ffbase的is.na.ffsum.ff,以便根据您的计算机可以处理的数据将数据加载到RAM中。