如何从 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
我有一个这样的列表
[[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