我想要用另一个向量(y
)的值来替换向量(x
)中的值。困境是:这个方法需要是动态的,以适应向量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
我希望将数字1替换为100,数字2替换为200,以此类推。
使用for循环可以轻松实现此目的,但对于包含数十万个值的大型向量来说,这种方法效率低下。有什么提示可以优化代码吗?
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]
}
x
是字母的向量)。请查看VitoshKa答案下面的评论。 - Marek