【问题标题】:Apply a function over a list of lists of dataframes in R对 R 中的数据框列表应用函数
【发布时间】:2015-04-19 06:37:02
【问题描述】:

我有一个嵌套结构,例如:

  • 由可变数量的项目组成的父列表“父”
  • 父列表的每个节点都是一个由三个命名元素组成的列表(比如说“foo”, '酒吧','小狗')
  • 内部列表的这些(命名)元素是由可变数量的列组成的数据框

(实际上,我什至很难构建这种结构的可重现示例)

我正在寻找一种有效的方法来将函数(比如说 toLower)应用到内部数据帧的每个单元格,对于父列表的每个元素,ofc。

我想我可以嵌套一些 lapply,但我不知道如何引用内部元素以及将哪个 FUN 用作 lapply 参数本身

【问题讨论】:

  • 生成一个可重现的示例可能很困难,但如果没有它提供解决方案则更加困难。我只能将您指向rapply,这可能有帮助或没有帮助。

标签: r


【解决方案1】:

如果我理解正确的话,你的结构是这样的:

parent <- list(
    a=list(foo=data.frame(first=c(1,2,3), second=c(4,5,6)),
       bar=data.frame(first=c(1,2,3), second=c(4,5,6)),
       puppy=data.frame(first=c(1,2,3), second=c(4,5,6))
      ),
    b=list(foo=data.frame(first=c(1,2,3), second=c(4,5,6)),
       bar=data.frame(first=c(1,2,3), second=c(4,5,6)),
       puppy=data.frame(first=c(1,2,3), second=c(4,5,6))
      )
    )

你想运行函数f,它适用于数据帧中的每个标量,超过parent,对吗?

如果是这样,以下函数 nested_lapply 应该这样做:

nested_lapply <- function(data, fun) {
    lapply(data, function(sublist) { lapply(sublist, fun) })
}

可以这样应用:

nested_lapply(parent, sqrt)

【讨论】:

  • lapply(数据,lapply,乐趣)
猜你喜欢
  • 2019-03-18
  • 1970-01-01
  • 2021-10-27
  • 2021-06-10
  • 2020-10-27
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多