gpt4 book ai didi

r - 使用嵌套列表时如何保留列表名称?

转载 作者:行者123 更新时间:2023-12-01 09:32:57 24 4
gpt4 key购买 nike

使用 plyrllply 优于 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 不包含 R1R2(如果我没有像 result2 那样对 foo 的每个元素内的嵌套列表进行操作)。如何确保在处理嵌套列表时添加了外部列表名称?

最佳答案

看来是列名的问题:

result <- ldply(foo, function(x){
df <- ldply(x, function(z) { data.frame(a=z, b= z^2)})
names(df)[1] <- ".id2"; df
})
result
.id .id2 a b
1 R1 M1 1 1
2 R1 M2 2 4
3 R2 M1 1 1
4 R2 M2 2 4

关于r - 使用嵌套列表时如何保留列表名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12964025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com