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

在R中替换向量中的公共元素,r,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 注释中的解决方案不是通用的,只有当向量2在名称方面完全嵌套在向量1中(不存在出现在2中而不是1中的元素)并且它们的顺序相同时,注释中的解决方案才有效。更普遍的解决

我有两个命名向量。有些元素对两者都是通用的。我想用向量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

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


v1请显示一些可复制的示例和预期输出。检查%
中的
%是否可以假定名称要排序,并在%names(v2)]@akrun中添加了detailsTry
v1[名称(v1)%。如果这个问题看起来不错,我们可以取消反对票吗。
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)
}