Angenommen, wir haben eine Reihe von Sentinel-Werten in [i,j]
einschließlich (nennen Sie sie y1
) und einen Vektor der Werte i:j
(nennen Sie es y2
). Zum Beispiel:Re-express diese R-Funktion in Bezug auf eingebaute?
y1 <- c(649, 652, 656, 658, 660, 661, 669, 671)
y2 <- 649:671
Oder
y1 <- c(719, 725, 726, 728, 729, 731, 734, 740)
y2 <- 718:740
Keine dieser Funktion berücksichtigen:
Cody5 <- function(y1, y2){
y3 <- rep(NA, length(y2))
j <- 1
i <- 0
while(j < length(y1)){
i <- i + 1
if(y2[i]<y1[j]){
y3[i]<-y1[j]
} else {
y3[i]<-y1[j<-j+1]
}
}
if(i < length(y3)){
for(l in i:length(y3)){
y3[l] <- y1[j]
}
}
y3
}
Ich habe versucht, Cody5
mit cut()
zu ersetzen, aber ich kann nicht scheinen, richtig zu machen.
Edit:
ich es geschrieben haben sollte: die Sentinel-Werte (y1
) und die Einträge des ursprünglichen Vektors sind sortiert.
Bitte erklären, was diese Funktion tut. Sie können es immer mit Rcpp implementieren (was hier trivial wäre). – Roland
@Roland: Ja, das [Rccp it] ist das, was ich gerade mache (aber wenn die Community einen Weg kennt, dies mit eingebauter Funktion auszudrücken, würde ich das lieber verwenden) – user189035
Meinst du 'y1 [findInterval (y2, y1, rightmost.closed = TRUE) +1] '? – jogo