这一定很容易,但我似乎无法使其发挥作用.我有两个不等长的命名向量:
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)
但这让我得到算术,但不保留结构.
您可以使用 tapply()
z <- c(x, y)
tapply(z, names(z), sum)
# A B C D
# 12 10 15 32
Run Code Online (Sandbox Code Playgroud)