我有一个嵌套的结构,如:
(实际上我很难建立一个可重复的这种结构的例子)
我正在寻找一种有效的方法将函数(比如说toLower)应用于内部数据帧的每个单元格,ofc用于父列表的每个元素。
我想我可以嵌套一些lapply但我不知道如何引用内部元素以及哪些FUN用作lapply参数本身
答案 0 :(得分: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)