假设我有一个向量
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))
但是,这当然会返回一个矩阵,而我希望将所有迭代应用于相同的向量。有人可以帮忙吗?
只是要确定。我知道如何编辑子集的向量,也知道如何使用循环。我真的很想用功能来做到这一点。
这是解决方案-优雅,快速,易读:
after[match(target,before)]
实际上,这不是我的解决方案,而是@nicola的解决方案(请参阅对该问题的评论)。如果他发布了相同的答案,我将很乐意删除我的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句