2017-09-28 4 views
1

Ich habe ein large array of 150000 elementsWie kann ich ein großes Array basierend auf einer Liste unterteilen?

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

Und ich habe eine Liste von Indizes:

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 

Wie kann ich die Anordnung der Teilmenge basierend auf der Liste?

Bisher mache ich diese eines nach dem anderen durch die Indizes verwenden, bevor ich die Liste gemacht:

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

Was die intelligentere Art und Weise, dies zu tun ist?

+0

@akrun Fertig. Es ist ein 1d-Array. – maximusdooku

+0

@akrun Ich denke, dass es die Zahlen verkettet? – maximusdooku

+0

Ich vermute, Sie haben eine einzige Liste mit 3 Vektoren als Indizes, oder? – akrun

Antwort

2

Wir

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

Oder mit Map

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

bearbeiten tun: mapply-Map geändert (basierend auf @ Kommentare thelatemail der)

Verwandte Themen