Angenommen, ich habe eine vector<int> positions
, die Positionen darstellt, die ich möchte Teilmenge aus, und zwei Rcpp::NumericVector
Vektoren A
und B
, die ich möchte Teilmenge (beide können auch als vector<double>
behandelt werden).Was ist der beste Weg, um eine Funktion auf eine Teilmenge eines Vektors anzuwenden?
Was wäre der beste Weg, was in R
zu berechnen ich als sum(A[positions])
(ein double
) schreiben würde, oder A[positions]/B[positions]
(a vector[double]
)? Grundsätzlich möchte ich auf die Elemente der Vektoren an bestimmten Positionen zugreifen, ohne Kopien (oder eine for
Schleife), wenn ich nicht muss.
Beispiel in R
:
positions = c(2,4,5) # just a vector with positions
A = rnorm(100) # a vector with 100 random numbers
B = rnorm(100)
mysum <- sum(A[positions])
mysmallvector <- A[positions]/B[positions] # or (A/B)[positions]
Gerade jetzt alles, was ich die Werte von positions
nur Schleife durch und und die Vektoren von Position eins nach dem anderen Teilmenge, aber ich kann es eine elegantere Lösung des Gedankens nicht erwehren .
einer for-Schleife Vermeidung nicht möglich ist: Sie durch Ihre Sammlung iterieren haben. Das tut R auch hinter den Kulissen. Wenn Sie auf der anderen Seite eine elegantere API möchten, müssen Sie auf Ihre eigenen Klassen zurückgreifen oder eine C++ - Matrixbibliothek verwenden, von der es viele gibt. – OnMyLittleDuck