使用plyr
's llply
over的优点lapply
是它保留了列表名称。见?llply
解释。我喜欢这个功能,但在嵌套列表的情况下似乎无法让它工作。例子:
library(plyr)
m <- as.list(1:2)
names(m) <- c('M1', 'M2')
foo <- list(m, m)
names(foo) <- paste0("R", 1:2)
result <- ldply(foo, function(x){
ldply(x, function(z) { data.frame(a=z, b= z^2)})
})
> result
.id a b
1 M1 1 1
2 M2 2 4
3 M1 1 1
4 M2 2 4
# if I don't operate on the inner list, I can preserve the outer list's names
result2 <- ldply(foo, function(x){
data.frame(a = x[[1]], b = x[[1]]^2)
})
> result2
.id a b
1 R1 1 1
2 R2 1 1
请注意,result
不包含R1
and R2
(它会被添加进来,就.id
好像我没有对foo
as 的每个元素内的嵌套列表进行操作一样result2
)。如何确保在处理嵌套列表时添加了外部列表名称?