我有一个名为list的嵌套列表,看起来像:
Browse[2]> rr
[[1]]
[[1]]$parameter
[1] 6
[[1]]$statistic
[1] 13.73371
[[1]]$observed
[1] 63
[[2]]
[[2]]$parameter
[1] 9
[[2]]$statistic
[1] 12.7092
[[2]]$observed
[1] 41
dput
输出:
list(list(parameter = 6, statistic = 13.7337141468157, observed = 63L),
list(parameter = 9, statistic = 12.7092009771629, observed = 41L),
)
还有另一个双打列表,如下所示:
Browse[2]> conf_intervals[1, ]
[1] 6.592301 8.236966 16.109724 6.629236 15.896665 2.606493 12.970584 5.213050 6.216172 62.650545 12.291587 156.140508
[13] 63.080242 41.772004 1.585398 8.012596 13.538332 17.923161 10.254139 5.857182 7.312259 11.952349 16.303510 6.344661
[25] 1.510251 1.325398 13.766738 2.625461 4.490282 37.430535 9.891200 161.666251 143.450382 65.561283 2.535526 5.749675
[37] 31.575314 22.625427 6.825213
dput
输出:
c(6.59230092348831, 8.23696562071911, ..... )
我想用新名称将第二个列表中的值添加到嵌套列表中。我希望最终输出像:
Browse[2]> rr
[[1]]
[[1]]$parameter
[1] 6
[[1]]$statistic
[1] 13.73371
[[1]]$observed
[1] 63
[[1]]$lower
[1] 6.592301
[[2]]
[[2]]$parameter
[1] 9
[[2]]$statistic
[1] 12.7092
[[2]]$observed
[1] 41
[[2]]$lower
[1] 8.236966
是否有一种简单的方法,而无需在嵌套列表上进行显式循环?
答案 0 :(得分:1)
也许这样可以有所帮助? ...
list1 <- list(
parameter=5,
statistics=13,
observed=63
)
list2 <- list(list1,list1)
list3 <- list(c(1,2))
for(i in seq(length(list2))){
list2[[i]]["conf"] <- list3[[1]][i]
}
将显示以下列表
list(list(parameter = 5, statistics = 13, observed = 63, conf = 1),
list(parameter = 5, statistics = 13, observed = 63, conf = 2))
答案 1 :(得分:1)
我会这样做:
rr <- list(list(parameter = 6, statistic = 13.7337141468157, observed = 63L),
list(parameter = 9, statistic = 12.7092009771629, observed = 41L)
)
conf <- c(6.59230092348831, 8.23696562071911)
DF <- do.call(rbind.data.frame, rr)
DF$conf <- conf
#if you need a nested list:
split(DF, seq_len(nrow(DF)))
#or if you don't like class data.frame
lapply(split(DF, seq_len(nrow(DF))), as.list)