2017-09-28 78 views
1

我有一個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]) 

什麼是更聰明的方式做到這一點?

+0

@akrun完成。這是一個1d陣列。 – maximusdooku

+0

@akrun我認爲這是連接數字? – maximusdooku

+0

我想你有一個包含3個向量的列表作爲索引,對吧? – akrun

回答

2

我們可以做

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

或用Map

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

編輯:從mapply改爲Map(基於@ thelatemail的評論)

相關問題