有没有办法直接使用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吗?
答案 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.ff
和sum.ff
,以便根据您的计算机可以处理的数据将数据加载到RAM中。