r - 向嵌套命名列表添加值的最佳方法
问题描述
我有一个名为 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
有没有一种简单的方法可以在不对嵌套列表进行显式循环的情况下做到这一点?
解决方案
我会这样做:
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)
推荐阅读
- javascript - 如何使用 ReactJS 显示来自 JSON 对象的数据?
- webix - webix jet 导航怎么做?
- c# - Android ContentResolver.NotifyChange() 不工作
- python - 同样,Python 中的相对导入 + sudo 问题
- spring - 如何使用 RabbitMQ、Spring Boot 和 React 构建 Pub Sub 应用程序
- css - 如何使用 flexbox 将一个盒子放在另一个盒子旁边?
- datatable - 如何从两个列表中获取不同的数据到 PowerApps 中的图库?
- ios - UITableviewcell 是错误的数据
- telegram - 不返回个人资料照片
- python - PySimpleGUI,如何让字符串在新行上打印而不是切断它?