将值添加到嵌套命名列表的最佳方法

时间:2020-06-22 11:23:34

标签: r list

我有一个名为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

是否有一种简单的方法,而无需在嵌套列表上进行显式循环?

2 个答案:

答案 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)