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

时间:2017-09-28 21:15:23

标签: arrays r loops apply

我有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 个答案:

答案 0 :(得分:2)

我们可以做到

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

Map

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

修改:从mapply更改为Map(基于@ thelatemail的评论)