加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

按名称添加两个向量

发布时间:2020-12-14 05:57:44 所属栏目:Java 来源:网络整理
导读:我有两个命名的向量 v1 - 1:4v2 - 3:5names(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. 解决方法 只需组
我有两个命名的向量
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 = "vd"))),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”,而是显示一种捕获感兴趣的向量的自动化方式.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读