我有一个列表(从此示例subsetting lists修改而来)
l3 <- list(item1 = list(item1a = data.frame(matrix(1:9,ncol = 3)),
item1b=letters[1:5],
item1c = c(T, F, T, T)),
item2 = list(item2a = data.frame(matrix(10:19,ncol = 3)),
item2b=letters[1:5],
item2c = c(T, F, T, T)))
l3
$item1
$item1$item1a
X1 X2 X3
1 1 4 7
2 2 5 8
3 3 6 9
$item1$item1b
[1] "a" "b" "c" "d" "e"
$item1$item1c
[1] TRUE FALSE TRUE TRUE
$item2
$item2$item2a
X1 X2 X3
1 10 14 18
2 11 15 19
3 12 16 10
4 13 17 11
$item2$item2b
[1] "a" "b" "c" "d" "e"
$item2$item2c
[1] TRUE FALSE TRUE TRUE
我想从每个最小的列表中选择X1变量。这些是我编写的代码,但尚未成功。
l3[[1:2]]["X1"]
[1] NA
下面的代码仅为第一个嵌套数据框提供X1(这是我希望为所有数据框获取的内容)
l3[[1]]$item1a$X1
[1] 1 2 3
非常感谢您的帮助!
答案 0 :(得分:3)
可能对您有帮助
library(purrr)
map(l3, ~ .x[[1]]$X1)
或将pluck
与select
一起使用
library(dplyr)
map(l3, ~ .x %>%
pluck(1) %>%
select(X1))
或者,如果我们不是连锁爱好者,那么可以像@ArtemSokolov所述
map(l3, pluck, 1, "X1")
或与lapply
lapply(l3, function(x) x[[1]]$X1)
答案 1 :(得分:2)
使用plyr
:
plyr::llply(l3,function(x)x[[1]]["X1"])
$item1
X1
1 1
2 2
3 3
$item2
X1
1 10
2 11
3 12
4 13