У меня список выглядит так

[ [ 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 из обоих уровней? так как мне нужно вычислить среднее из них. Спасибо!

0
April 18 Мар 2021 в 06:23

2 ответа

Лучший ответ

На самом деле функция 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)))
0
Tim Biegeleisen 18 Мар 2021 в 03:36

Один из способов сделать это, используя представление данных Тима Бигелейзена, - создать функцию для извлечения p1est.z и ее применения. Ваш список верхнего уровня состоит из двух элементов, в обоих первый элемент имеет p1est.z, так что вы можете сделать

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

А затем применить его

sapply(your_list, fn)
# [1] 2.890829 3.158164
0
pdb 18 Мар 2021 в 04:28