R嵌套列表与另一个列表索引

时间:2017-03-30 15:41:58

标签: r string list lapply nested-lists

我正在面对R中的一些嵌套列表蓝调。

我有两个嵌套列表,如下所示,除了每个列表大小为2亿。我有兴趣用bIdx索引aaa,即根据bIdx中指定的索引从aaa中提取相应的条目。例如,在操作之后,我们将从aaa [[6]]中获取1,8,10个条目,即" TopNews"," 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

1 个答案:

答案 0 :(得分:2)

这是mapply的经典案例。此函数将函数作为第一个参数(在本例中为索引函数[)。然后它循环遍历以下参数中的列表,并使用所选元素作为指定函数的第1,第2,...参数。

一个例子:

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的输出)。