将向量中的某些组件值替换为其他值

Tim*_*Tim -3 r

在R中,在向量中,即1-dim矩阵,我想将值为3的组件更改为值1,将值为4的组件更改为值2.我该怎么做?谢谢!

mne*_*nel 14

惯用的方法是[<-在形式中使用 x[index] <- result

如果您正在处理整数/因子或字符变量,那么==将可靠地用于索引,

x <- rep(1:5,3)
x[x==3] <- 1
x[x==4] <- 2

x
## [1] 1 2 1 2 5 1 2 1 2 5 1 2 1 2 5
Run Code Online (Sandbox Code Playgroud)

car有一个有用的功能recode(它是一个包装器[<-),可以让你在一次调用中组合所有重新编码

例如

library(car)

x <- rep(1:5,3)

xr <- recode(x, '3=1; 4=2')

x
## [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
xr
## [1] 1 2 1 2 5 1 2 1 2 5 1 2 1 2 5
Run Code Online (Sandbox Code Playgroud)

感谢@joran mapvaluesplyr包中提到的另一个包装器[<-

x <- rep(1:5,3)
mapvalues(x, from = c(3,1), to = c(1,2))
Run Code Online (Sandbox Code Playgroud)

plyr::revaluemapvalues特定 factorcharacter变量的包装器.

  • **plyr**包中还有`revalue`和`mapvalues`. (4认同)
  • 对于`recode()`来说,我以前从未见过它,但是肯定会把它放在我的工具箱里. (2认同)