【问题标题】:R nested lists indexing with another listR嵌套列表与另一个列表索引
【发布时间】:2017-03-30 15:41:58
【问题描述】:

我在 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

【问题讨论】:

    标签: r string list lapply nested-lists


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我知道我错过了一些明显的东西! :) 如果不嵌套,那么你会怎么称呼这种列表?
    • 我把这种类型的列表称为...列表。向量列表,如果我需要令人讨厌的迂腐;-)
    猜你喜欢
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 2015-05-24
    相关资源
    最近更新 更多