意外的替换行为

时间:2011-01-24 14:23:14

标签: r

我需要replace()命令

的帮助
replace(c(3,2,2,1),1:3,4:6)

我期待输出6,5,5,4但得到4,5,6,1

我做错了什么?

我对替换是什么的理解:它查找第二个参数中第一个参数的元素的索引值(例如3是1:3中的第3个元素)然后用第三个参数中的元素替换它相同的指数(例如4:6中的第3个元素是6因此我期望向量中的第一个元素为6的原因)

谢谢。 (替换帮助文件没有示例...需要在此处要求澄清)

3 个答案:

答案 0 :(得分:6)

虽然replace没有提供您想要的行为,但使用match很容易实现您想要的行为:

new[match(x,i)]

答案 1 :(得分:4)

这一切都在replace()的描述中给出,只需仔细阅读:

 ‘replace’ replaces the values in ‘x’ with indices given in ‘list’
 by those given in ‘values’. If necessary, the values in ‘values’
 are recycled.


x <- c(3, 2, 2, 1)
i <- 1:3
new <- 4:6

所以这意味着你的情况:

x[i] <- new

答案 2 :(得分:2)

该命令表示采用向量c(3,2,2,1)并用1:3中的索引替换由向量4:6给出的值的组件。这给出了c(4,5,6,1)。