首页 文章

在R中的数据帧列表中应用函数

提问于
浏览
1

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

  • 父列表'parent'由可变数量的项组成

  • 父列表的每个节点都是三个命名元素的列表(让's say ' foo ', ' bar ', ' puppy')

  • 内部列表的这些(命名)元素是由可变数量的列组成的数据帧

(实际上,我很难 Build 一个可重复的结构示例)

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

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

1 回答

  • 3

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

    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)
    

相关问题