l = list()
l[[1]] = list(); l[[1]]$asdf = 'jkl'; l[[1]]$qwerty = 5
l[[2]] = list(); l[[2]]$asdf = 'zxcv'; l[[2]]$qwerty = 55
l[[3]] = list(); l[[3]]$asdf = 'poiu'; l[[3]]$qwerty = 555
现在,我想以某种方式从此列表中提取qwerty
;即我想获得一个等效的c(5, 55, 555)
,因为此列表的连续元素的qwerty
字段的值为5
,55
,555
。 / p>
如何获取?
(如果我陷入了XY:我真正想实现的目标是获得该列表中qwerty
字段具有最大价值的元素;我想了一种方法要获得此结果,是将qwerty
提取到中间numeric
中,然后我可以调用max
)
答案 0 :(得分:3)
我们可以通过pluck
和list
循环访问map
“ qwerty”元素
library(tidyverse)
map_dbl(l, pluck, "qwerty")
#[1] 5 55 555
或使用sapply
中的base R
sapply(l, `[[`, "qwerty")
#[1] 5 55 555
用max
包装以获得最大值
max(sapply(l, `[[`, "qwerty"))
#[1] 555
如果它是list
i1 <- which.max(sapply(l, `[[`, "qwerty"))
l[i1]
#[[1]]
#[[1]]$asdf
#[1] "poiu"
#[[1]]$qwerty
#[1] 555
或者另一个选择是
l %>%
transpose %>%
.$qwerty %>%
unlist %>%
which.max %>%
magrittr::extract(l, .)