代码之家  ›  专栏  ›  技术社区  ›  maximusdooku

如何基于列表对大型数组进行子集划分?

  •  1
  • maximusdooku  · 技术社区  · 8 年前

    我有一个 large array of 150000 elements

    structure(c(0.297737591051841, 0.29315072190034, 0.300524437089258, 
    0.297581868890772, 0.29315252160195, 0.30052371791622, 0.297447088491222, 
    0.293154289987493, 0.300522998984405, 0.297331962830338), .Dim = 10L)
    

    List of 3
    
    int[1:8784(1d)] 1 4 7 10 13
    num[1:8784(1d)] 2 5 8 11 14
    num[1:8784(1d)] 3 6 9 12 15
    

    如何根据列表对数组进行子集划分?

    到目前为止,我正在使用列表之前的索引逐一执行此操作:

    data.frame(array[list1], array[list2], array[list3])
    

    最聪明的方法是什么?

    1 回复  |  直到 8 年前
        1
  •  2
  •   akrun    8 年前

    我们可以做到

    as.data.frame(sapply(lst, function(x) ar1[x]))
    

    或与 Map

    data.frame(Map(`[`, list(ar1), lst))
    

    编辑:更改自 mapply 地图

    推荐文章