楼主: frederic7
10361 4

长度不同的向量怎么相加? [推广有奖]

  • 13关注
  • 3粉丝

副教授

7%

还不是VIP/贵宾

-

威望
0
论坛币
2031 个
通用积分
0.7200
学术水平
8 点
热心指数
18 点
信用等级
4 点
经验
9405 点
帖子
616
精华
0
在线时间
453 小时
注册时间
2009-9-26
最后登录
2022-3-19

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
比如,

1:4
2:7
4:10
2:8
7:12

五个向量相加,长度不够的按0算。
怎么求?

有下面这个方法
长度不等的向量相加
a=1:2
b=1:3
c=c(a,rep(0,length(b)-length(a)))+b
c

但是向量比较多的话这么算很烦。

有其他号方法吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:length leng eng 向量 长度 相加

沙发
aresblq 发表于 2009-11-20 13:14:07 |只看作者 |坛友微信交流群
一个简单的方法就是使用循环做,首先找出最长的向量,这里为b,然后把其他向量逐个加到b里去,

使用道具

藤椅
snakepointid 发表于 2015-6-28 17:00:22 |只看作者 |坛友微信交流群
a<-1:3
b<-2:10
d<-rep(0,length(a)*length(b))
e<-(a+d)+(d+b)
e<-e[1:length(b)]

其实可以不用循环,首先定义第三个向量,值为0,长度为两个向量长度的乘积。
然后分别相加,再取长度最长的向量的长度。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
alecwf + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

板凳
alecwf 发表于 2018-11-21 21:56:18 |只看作者 |坛友微信交流群
五个向量相加,长度不够的按0算。代码还不完全符合要求

使用道具

报纸
hszest 学生认证  发表于 2018-11-21 22:41:03 |只看作者 |坛友微信交流群
  1. library(dplyr)

  2. vecList <-
  3.     list(
  4.         a = 1:4,
  5.         b = 2:7,
  6.         c = 4:10,
  7.         d = 2:8,
  8.         e = 7:12
  9.     )

  10. # Utility funciton
  11. alignVec <- function(inVec, tarLen) {
  12.     return(c(inVec, rep(0, tarLen - length(inVec))))
  13. }

  14. # Determine the desired length
  15. maxLen <- max(sapply(vecList, length))

  16. # Align the vectors
  17. vecTarList <- lapply(vecList, alignVec, tarLen = maxLen)

  18. # Intermediate result
  19. df <- as.data.frame(vecTarList)

  20. # Result
  21. result <- as.data.frame(vecTarList) %>% rowSums()
复制代码


转换得到的df:
  1. > df
  2.   a b  c d  e
  3. 1 1 2  4 2  7
  4. 2 2 3  5 3  8
  5. 3 3 4  6 4  9
  6. 4 4 5  7 5 10
  7. 5 0 6  8 6 11
  8. 6 0 7  9 7 12
  9. 7 0 0 10 8  0
复制代码


最终结果:
  1. > result
  2. [1] 16 21 26 31 31 35 18
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 2 + 2 + 2 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 16:53