Werte in einem Vektor basierend auf einem anderen Vektor ersetzen

Ich möchte Werte in einem Vektor ersetzen x) mit Werten eines anderen Vektors y). Catch 22: Die Methoden müssen dynamisch sein, um die unterschiedliche Anzahl von "Ebenen" in vector @ zu berücksichtigex. Betrachten Sie zum Beispiel vectorx

x <- sample(c(1, 2, 3, 4, 5), 100, replace = TRUE)
> x
  [1] 2 4 1 1 3 1 1 1 1 1 2 2 5 5 4 5 5 3 4 1 2 2 3 3 3 5 1 3 4 5 5 3 2 4 3 1 3
 [38] 1 4 5 4 1 4 5 4 5 2 4 2 5 3 4 3 1 2 1 1 5 1 4 2 2 5 2 2 4 5 2 4 5 2 5 4 1
 [75] 3 3 4 4 1 1 4 4 2 4 5 4 5 5 4 2 5 2 4 5 3 2 1 1 2 2

wo möchte ich 1s mit 100, 2s mit 200 und so weiter ersetzen.

Dies kann leicht mit einer for-Schleife durchgeführt werden, aber für große Vektoren mit mehreren 100.000 Werten ist dies sehr ineffizient. Irgendwelche Tipps, wie man den Code optimiert?

x <- sample(c(1, 2, 3, 4, 5), 100, replace = TRUE)
y <- c(100, 200, 300, 400, 500)
x.lvl <- c(1, 2, 3, 4, 5)
x.temp <- x

for (i in 1:length(y)) {
    x.temp[which(x == x.lvl[i])] <- y[i]
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage