如何在 ffdf 中使用 apply 或 sapply 或 lapply?
Posted
技术标签:
【中文标题】如何在 ffdf 中使用 apply 或 sapply 或 lapply?【英文标题】:How to use apply or sapply or lapply with ffdf? 【发布时间】:2014-02-19 15:51:08 【问题描述】:有没有办法直接对 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】:ffdf 基本上是一个包含“virtual”、“physical”、“row.names”元素的列表。 如果你在物理元素上做一个 lapply,你就会得到你想要的。
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 中。
【讨论】:
感谢您的快速回复。不过我电脑的硬盘不是很感激!以上是关于如何在 ffdf 中使用 apply 或 sapply 或 lapply?的主要内容,如果未能解决你的问题,请参考以下文章
Rff:如何在 ffdf 对象中添加一个依赖于同一行中其他元素的新列?