【问题标题】:How to use apply or sapply or lapply with ffdf?如何在 ffdf 中使用 apply 或 sapply 或 lapply?
【发布时间】: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?

【问题讨论】:

    标签: r bigdata


    【解决方案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.ffsum.ff,以便根据您的计算机可以处理的内容将数据分块加载到 RAM 中。

    【讨论】:

    • 感谢您的快速回复。不过我电脑的硬盘不是很感激!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2019-03-29
    • 1970-01-01
    • 2014-02-10
    • 2016-12-03
    • 1970-01-01
    • 2019-08-23
    相关资源
    最近更新 更多