找到所有相应的值

时间:2017-04-13 07:43:04

标签: r vectorization

我想给dat向量中的所有值赋予我在另一个向量(new_value)中定义的相应值。我已经设法以某种方式做了,但我喜欢没有循环的解决方案:

dat <- c("a","c","b","a","a","c","a","b","b","a")  
old_value <- names(table(dat))
new_value <- 1:length(old_value)
new_dat <- rep(NA, length(dat))

for(z in 1:length(old_value)){
  new_dat[dat==old_value[z]] <- c(1:length(new_value))[z]
}
new_dat

我不想使用其他库。请仅基于解决方案。

1 个答案:

答案 0 :(得分:3)

我们可以使用match

new_dat <- new_value[match(dat, old_value)]

对于当前的例子,甚至

match(dat, old_value)

应该有效