【发布时间】:2018-06-17 16:45:50
【问题描述】:
我想一次用特定的其他值替换向量中的不同值。
在我正在解决的问题中:
- 1 应该换成 2,
- 2 与 4,
- 3 加 6,
- 4 加 8,
- 5 加 1,
- 6 与 3,
- 7 和 5 和
- 8 和 7。
这样:
x <- c(4, 2, 0, 7, 5, 7, 8, 9)
x
[1] 4 2 0 7 5 7 8 9
将转换为:
[1] 8 4 0 5 1 5 7 9
替换后。
我尝试过使用:
x[x == 1] <- 2
x[x == 2] <- 4
以此类推,但这会导致 1 被 7 替换。
不使用任何包的最简单的解决方案是什么?
【问题讨论】:
-
限于个位数,但很有趣:
type.convert(strsplit(chartr(paste(1:8, collapse = ''), paste(c(2, 4, 6, 8, 1, 3, 5, 7), collapse = ''), paste(x, collapse = '')), '')[[1]]) -
参见例如the accepted answer in the first link 中的“更通用的方法”。
-
second link 中的“索引命名向量”方法在您的情况下为
setNames(c(0,2,4,6,8,1,3,5,7,9), 0:9)[as.character(x)]
标签: r