我有两个命名的向量
v1 <- 1:4 v2 <- 3:5 names(v1) <- c("a","b","c","d") names(v2) <- c("c","e","d")
我想把它们加上名字,即预期的结果是
> v3 a b c d e 1 2 6 9 4
有没有办法以编程方式在R中做这个?注意,名称可能不一定是排序顺序,如上面的v2.
解决方法
只需组合向量(例如使用c)并使用自动填充:
v3 <- c(v1,v2) tapply(v3,names(v3),sum) # a b c d e # 1 2 6 9 4
或者,为了乐趣(因为你只是在做总和),继续“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
原文地址:https://www.jb51.cc/java/120677.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。