有没有办法直接将应用类型构造用于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.ff和sum.ff来自包ffbase,以便根据您的计算机可以处理的数据将数据加载到RAM中.