Ответ 1
Просто соедините векторы (например, с помощью c
) и используйте tapply
:
v3 <- c(v1, v2)
tapply(v3, names(v3), sum)
# a b c d e
# 1 2 6 9 4
Или, для удовольствия (поскольку вы просто делаете sum
), продолжая "v3":
xtabs(v3 ~ names(v3))
# names(v3)
# a b c d e
# 1 2 6 9 4
Я полагаю, что с "data.table" вы также можете сделать что-то вроде:
library(data.table)
as.data.table(Reduce(c, mget(ls(pattern = "v\\d"))),
keep.rownames = TRUE)[, list(V2 = sum(V2)), by = V1]
# V1 V2
# 1: a 1
# 2: b 2
# 3: c 6
# 4: d 9
# 5: e 4
(Я разделил последнее не столько на "data.table", сколько на автоматизированный способ захвата интересующих векторов).