如何添加不同长度的向量?

时间:2019-06-06 16:06:58

标签: r

我正在尝试添加两个向量。

  • a是41,5
  • b是28、5、3、1

我只是尝试这样做

c <- a + b

答案为69, 10, 44, 6。我猜它重用了吗?

我希望在将a和b加在一起后将c设为69, 10, 3, 1

我完全没有R的经验,所以请保持解决方案简单。预先感谢!

3 个答案:

答案 0 :(得分:3)

这是由于回收。我们可以通过保持相同的长度来防止这种情况,但是要加上0

a1 <- `length<-`(a, length(b))
replace(a1, is.na(a1), 0) + b
#[1] 69 10  3  1

或者,如果有多个向量,则将其放置在list中,以编程方式设置长度,并使用同时具有rowSums参数的na.rm

lst1 <- list(a, b)
rowSums(sapply(lst1, `length<-`, max(lengths(lst1))), na.rm = TRUE)
#[1] 69 10  3  1

答案 1 :(得分:3)

另一种可能是:

c(a, rep(0, length(b) - length(a))) + b

[1] 69 10  3  1

答案 2 :(得分:0)

当您添加两个大小不同的向量时,R回收较短长度的向量之一。请参阅:https://cran.r-project.org/doc/manuals/r-release/R-lang.html#Recycling-rules。一种解决方案是按照tmfmnk的答案,用零填充较短的那个。