Я хотел бы заменить значения в векторе ( x
) значениями из другого вектора ( y
). Уловка 22: методы должны быть динамическими, чтобы соответствовать разному количеству «уровней» в векторе x
. Например, рассмотрим вектор x
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
, где я хотел бы заменить единицы на 100, 2 на 200 и т. д.
Это можно легко сделать с помощью цикла for, но для больших векторов, нескольких 100 тысяч значений, это крайне неэффективно. Есть какие-нибудь советы по оптимизации кода?
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]
}