【问题标题】:Combine elements in list based on indexes in another vector根据另一个向量中的索引组合列表中的元素
【发布时间】:2012-07-06 14:54:19
【问题描述】:

给定一个列表 (a) 和一个与 a 长度相同的数值向量 (b):

a <- list(1, c(3, 7), 5)
b <- c(1,1,2)

如何创建一个长度为max(b)的新列表,其中a中的每个元素都根据b放入相应的索引中,如果出现多次则合并,这样就可以得到:

[[1]]
[1] 1 3 7

[[2]]
[1] 5

希望这应该非常有效地完成(没有循环),因为我的数据的维度往往非常大......

我很确定有一个我没有想过的明显解决方案......

感谢您的帮助

【问题讨论】:

    标签: r list indexing


    【解决方案1】:

    怎么样:

    split(unlist(a), rep(b, sapply(a, length)))
    $`1`
    [1] 1 3 7
    
    $`2`
    [1] 5
    

    【讨论】:

      【解决方案2】:

      这是另一种方式

      > lapply(split(a, b), unlist)
      $`1`
      [1] 1 3 7
      
      $`2`
      [1] 5
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-28
        • 1970-01-01
        • 2020-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-14
        相关资源
        最近更新 更多