Ich möchte Werte in einem Vektor (x
) durch Werte von einem anderen Vektor (y
) ersetzen. Catch 22: Die Methoden müssen dynamisch sein, um verschiedene Anzahl von "Ebenen" in Vektor x
unterzubringen. Betrachten wir zum Beispiel Vektor x
Ersetze Werte in einem Vektor basierend auf einem anderen Vektor
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 Ich mag würde 1s mit 100, 2s mit 200 und so weiter ersetzen.
Dies kann leicht mit einer for-Schleife erfolgen, aber für große Vektoren, mehrere hunderttausend Werte, ist dies sehr ineffizient. Irgendwelche Tipps, wie Sie den Code optimieren können?
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]
}
Im Spielzeug Beispiel könnten Sie sogar y verwenden [x] –
Oder nur x * 100 :) – VitoshKa
Perfect. Es funktioniert auch ohne Umwandlung in einen Faktor und erkennt, ob x mehr "Ebenen" als von y vorausgesehen hat. –