Auswählen habe ich eine Matrix:R: eine andere Zeile in jeder Spalte effizient
x = rbind(1:5, 6:10)
x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
Ich mag, für jede Spalte eine andere Zeile auszuwählen, basierend auf einem Index. Zum Beispiel könnte ich möchte einen neuen Vektor erhalten, wie
[1] 1 2 8 4 10
sieht durch Reihen c(1,1,2,1,2)
an den entsprechenden Spalten auswählen. Ich kann es also:
diag(x[c(1,1,2,1,2),])
[1] 1 2 8 4 10
aber das ist Speicher ineffizient, weil es diese Matrix zu erstellen:
x[c(1,1,2,1,2),]
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 1 2 3 4 5
[3,] 6 7 8 9 10
[4,] 1 2 3 4 5
[5,] 6 7 8 9 10
ein echten Daten-Set und mehr Iterationen Ich bin besorgt über ein schweres Leistungsproblem gegeben. Wie kann ich die gleichen Werte basierend auf meinem Index effizient extrahieren?
interessant. Ich wusste nie, dass es vorher möglich ist. – zyurnaidi