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

Jam*_*kby 1 r bigdata

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

sum(is.na(ffdf$columnname))
Run Code Online (Sandbox Code Playgroud)

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

lapply(ffdf, function(x){sum(is.na(x))})
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到:

$virtual
[1] 0

$physical
[1] 0

$row.names
[1] 0
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

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

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