替换R

时间:2016-11-25 15:30:58

标签: r vector

我们说我有一个向量

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))

但是,这当然会返回一个矩阵,而我希望所有迭代都应用于同一个向量。有人可以帮忙吗?

只是为了确定。我知道如何编辑子集矢量,我知道如何使用循环。我真的很想用功能性的。

1 个答案:

答案 0 :(得分:0)

这是解决方案-优雅,快速,易读:

after[match(target,before)]

这实际上不是我的解决方案,而是@nicola的解决方案(请参阅问题注释)。如果他发布了相同的答案,我将很乐意删除我的。