如何在R中添加不等长的命名向量

Ern*_*nie 3 r vector

这一定很容易,但我似乎无法使其发挥作用.我有两个不等长的命名向量:

x <- as.vector(c(5, 10,15,20))
names(x) <- c("A", "B", "C", "D")
y <- as.vector(c(7, 12))
names(y) <- c("A", "D")
Run Code Online (Sandbox Code Playgroud)

我想添加它们并保留最长的命名约定.我希望x + y能够产生:

A   B   C   D
12  10  15  32
Run Code Online (Sandbox Code Playgroud)

我已经尝试使长度与其他地方建议的相等,并允许算术,但不保留命名约定.我也尝试过这样的事情:

z <- x[names(y)] + y
Run Code Online (Sandbox Code Playgroud)

但这让我得到算术,但不保留结构.

Ric*_*ven 6

您可以使用 tapply()

z <- c(x, y)
tapply(z, names(z), sum)
#  A  B  C  D 
# 12 10 15 32 
Run Code Online (Sandbox Code Playgroud)