R使用“ [[”将函数应用于嵌套列表元素

时间:2019-12-11 15:48:21

标签: r list nested subset

给出数字向量的嵌套列表,例如 l = list( a = list(1:2, 3:5), b = list(6:10, 11:16)) 如果我想应用“索引1 /首位”数字向量中的函数,例如length,我可以使用子集函数[[来实现:

> sapply(lapply(l, "[[", 1), length)
a b 
2 5 

我无法弄清楚如何向[[提供任意索引,以获取每个子列表中两个向量的长度(在本示例中)(天真的尝试:sapply(lapply(l, "[[", 1:2), length))。

3 个答案:

答案 0 :(得分:1)

[[只能子集一个。相反,我们需要[大于1,然后使用lengths

sapply(lapply(l, "[", 1:2), lengths)
#     a b
#[1,] 2 5
#[2,] 3 6

答案 1 :(得分:1)

不使用base,但是purrr是一个很好的列表包。

library(purrr)

map_dfc(l, ~lengths(.[1:2]))
# A tibble: 2 x 2
      a     b
  <int> <int>
1     2     5
2     3     6

答案 2 :(得分:1)

也许下面的代码可以帮助您...

> sapply(l, function(x) sapply(x, length))
     a b
[1,] 2 5
[2,] 3 6