给出数字向量的嵌套列表,例如
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)
)。
答案 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