替换R中向量中的公共元素

时间:2016-11-15 08:36:46

标签: r

我有两个命名的矢量。一些元素对两者都是共同的。如果它存在于向量2中,我想用向量2中的值替换第一个向量中的所有元素。 例如:

Vector1:
A1 A2 A3 A4 A5
0  0   0  0  0
Vector2:
A2 A5
3  5

Output Expected:
A1 A2 A3 A4 A5
0   3  0  0  5

1 个答案:

答案 0 :(得分:0)

注释中的解决方案不是一般化的,只有当向量2在名称方面完全嵌套在向量1中时才有效(没有元素存在于2而不是1中)并且它们的顺序相同。一个更通用的解决方案可能就是这样(我正在改变矢量值和顺序):

v1 <- c(A4 = 0, A2 = 0, A5 = 0, A1 = 3, A6 = 5)
v2 <- c(A5 = 3, A7 = 1, A2 = 4)

repvecs <- function(a = v1, b = v2) {
    commons <- names(a)[names(a) %in% names(b)]
    a[commons] <- b[commons]
    return(a)
}