我正在尝试添加两个向量。
我只是尝试这样做
c <- a + b
答案为69, 10, 44, 6
。我猜它重用了吗?
我希望在将a和b加在一起后将c设为69, 10, 3, 1
。
我完全没有R的经验,所以请保持解决方案简单。预先感谢!
答案 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的答案,用零填充较短的那个。