Ric*_*cky 13 aggregate r vector names addition
我有两个命名的向量
v1 <- 1:4
v2 <- 3:5
names(v1) <- c("a", "b", "c", "d")
names(v2) <- c("c", "e", "d")
Run Code Online (Sandbox Code Playgroud)
我想通过名称添加它们,即预期的结果是
> v3
a b c d e
1 2 6 9 4
Run Code Online (Sandbox Code Playgroud)
有没有办法以编程方式在R中执行此操作?请注意,名称可能不一定按排序顺序排列,v2如上所述.
A5C*_*2T1 16
只需组合矢量(c例如使用)并使用tapply:
v3 <- c(v1, v2)
tapply(v3, names(v3), sum)
# a b c d e
# 1 2 6 9 4
Run Code Online (Sandbox Code Playgroud)
或者,为了好玩(因为你刚才这样做sum),继续"v3":
xtabs(v3 ~ names(v3))
# names(v3)
# a b c d e
# 1 2 6 9 4
Run Code Online (Sandbox Code Playgroud)
我想用"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
Run Code Online (Sandbox Code Playgroud)
(我为"data.table"分享了后者,而不是为了显示捕获感兴趣的载体的自动方式.)