我们说我有一个向量
target <- c(19,15,12,21,20,9,15,14)
现在,我想用其他值替换该向量中的所有值,让我们用相应的字母说。所以,我知道之前的价值观......
before <- 1:26
我知道他们应该如何看待......
after <- letters[1:26]
现在,我想将target
中与before
中的值相等的所有值替换为after
中的相应值。我想使用功能(例如应用函数)来实现这一目的:
someFancyFunction(target, before, after)
[1] "s" "o" "l" "u" "t" "i" "o" "n"
我最好的想法是使用mapply()
myFun <- function(x,y,z){
x[x==y] <- z
x
}
mapply(myFun, y = before, z = after, MoreArgs = list(x = target))
但是,这当然会返回一个矩阵,而我希望所有迭代都应用于同一个向量。有人可以帮忙吗?
只是为了确定。我知道如何编辑子集矢量,我知道如何使用循环。我真的很想用功能性的。
答案 0 :(得分:0)
这是解决方案-优雅,快速,易读:
after[match(target,before)]
这实际上不是我的解决方案,而是@nicola的解决方案(请参阅问题注释)。如果他发布了相同的答案,我将很乐意删除我的。