如何从 r 中的多级列表中提取值

How to extract values from a list with multiple levels in r

我有一个这样的列表

[[1]]

[[1]][[1]]

[[1]][[1]]$p1est.z [1] 2.890829

[[1]][[1]]$p1se.z [1] 0.1418367

[[1]][[2]]

[[1]][[2]]$p2est.w [1] 4.947014

[[1]][[2]]$p2se.w [1] 0.5986682

[[2]]

[[2]][[1]]

[[2]][[1]]$p1est.z [1] 3.158164

[[2]][[1]]$p1se.z [1] 0.138770

[[2]][[2]]

[[2]][[2]]$p2est.w [1] 5.052874

[[2]][[2]]$p2se.w [1] 0.585608

如何从两个级别中提取“p1est.z”的值?因为我需要计算它们的平均值。 谢谢!

实际上 unlist() 开箱即用的功能应该可以在这里工作:

output <- unlist(your_list)
output[names(output) == "p1est.z"]

 p1est.z  p1est.z 
2.890829 3.158164 

数据:

your_list <- list(
                 list(list(p1est.z=2.890829, p1se.z=0.1418367),
                      list(p1est.w=4.947014, p2se.w=0.5986682)),
                 list(list(p1est.z=3.158164, p1se.z=0.138770),
                      list(p1est.w=5.052874, p2se.w=0.585608)))

一种方法是使用 Tim Biegeleisen 对您的数据的表示,创建一个函数来提取 p1est.z 并应用它。你的顶级列表有两个元素,第一个元素有一个 p1est.z 所以你可以做

fn <- function(x) { x[[1]]$p1est.z }

然后应用它

sapply(your_list, fn)
# [1] 2.890829 3.158164