R嵌套列表与另一个列表索引
R nested lists indexing with another list
我在 R 中遇到了一些嵌套列表问题。
我有两个嵌套列表,如下所示,但每个列表的大小都是 2 亿。我对用 bIdx 索引 aaa 很感兴趣,即根据 bIdx 中指定的索引从 aaa 中提取相应的条目。例如,在操作之后,我们将从 aaa[[6]] 中提取 1,8,10 个条目,即 "TopNews"、"Opinion" 和 "Opinion".
由于列表很大,基于迭代列表的解决方案不是一个选项,我想要一个基于 lapply(或变体)的解决方案。
非常感谢任何帮助!
aaa
[[1]]
character(0)
[[2]]
character(0)
[[3]]
character(0)
[[4]]
[1] "TopNews" "TopNews"
[[5]]
[1] "Opinion"
[[6]]
[1] "TopNews" "TopNews" "TopNews" "Opinion" "TopNews" "TopNews" "Opinion"
[8] "Opinion" "Opinion" "Opinion" "Opinion" "Opinion"
[[7]]
[1] "N.Y./Region" "Opinion" "Opinion" "Opinion" "Opinion"
[6] "Opinion" "TopNews" "TopNews" "TopNews" "Opinion"
[[8]]
[1] "TopNews" "TopNews" "TopNews"
[[9]]
[1] "Opinion" "Opinion" "TopNews" "Opinion" "TopNews"
[[10]]
[1] "TopNews" "Opinion" "TopNews" "TopNews" "Opinion"
bIdx
[[1]]
integer(0)
[[2]]
integer(0)
[[3]]
integer(0)
[[4]]
[1] 1 2
[[5]]
[1] 1
[[6]]
[1] 1 8 10
[[7]]
[1] 3 8
[[8]]
[1] 2
[[9]]
[1] 3
[[10]]
[1] 3
这是mapply
的经典案例。此函数将函数作为第一个参数(在本例中为索引函数 [
)。然后循环遍历以下参数中的列表,并将所选元素用作指定函数的第一个、第二个……参数。
一个例子:
aaa <- list(
character(0),
letters[1:4],
letters[10:20]
)
bldx <- list(
integer(0),
c(2,1),
c(7,3,2)
)
mapply(`[`,aaa,bldx)
旁注:您的列表并不是真正嵌套的。嵌套列表将是一个列表,其元素再次被列表(参见 lm
的输出)。
我在 R 中遇到了一些嵌套列表问题。
我有两个嵌套列表,如下所示,但每个列表的大小都是 2 亿。我对用 bIdx 索引 aaa 很感兴趣,即根据 bIdx 中指定的索引从 aaa 中提取相应的条目。例如,在操作之后,我们将从 aaa[[6]] 中提取 1,8,10 个条目,即 "TopNews"、"Opinion" 和 "Opinion".
由于列表很大,基于迭代列表的解决方案不是一个选项,我想要一个基于 lapply(或变体)的解决方案。
非常感谢任何帮助!
aaa
[[1]]
character(0)
[[2]]
character(0)
[[3]]
character(0)
[[4]]
[1] "TopNews" "TopNews"
[[5]]
[1] "Opinion"
[[6]]
[1] "TopNews" "TopNews" "TopNews" "Opinion" "TopNews" "TopNews" "Opinion"
[8] "Opinion" "Opinion" "Opinion" "Opinion" "Opinion"
[[7]]
[1] "N.Y./Region" "Opinion" "Opinion" "Opinion" "Opinion"
[6] "Opinion" "TopNews" "TopNews" "TopNews" "Opinion"
[[8]]
[1] "TopNews" "TopNews" "TopNews"
[[9]]
[1] "Opinion" "Opinion" "TopNews" "Opinion" "TopNews"
[[10]]
[1] "TopNews" "Opinion" "TopNews" "TopNews" "Opinion"
bIdx
[[1]]
integer(0)
[[2]]
integer(0)
[[3]]
integer(0)
[[4]]
[1] 1 2
[[5]]
[1] 1
[[6]]
[1] 1 8 10
[[7]]
[1] 3 8
[[8]]
[1] 2
[[9]]
[1] 3
[[10]]
[1] 3
这是mapply
的经典案例。此函数将函数作为第一个参数(在本例中为索引函数 [
)。然后循环遍历以下参数中的列表,并将所选元素用作指定函数的第一个、第二个……参数。
一个例子:
aaa <- list(
character(0),
letters[1:4],
letters[10:20]
)
bldx <- list(
integer(0),
c(2,1),
c(7,3,2)
)
mapply(`[`,aaa,bldx)
旁注:您的列表并不是真正嵌套的。嵌套列表将是一个列表,其元素再次被列表(参见 lm
的输出)。