Это связано с утилизацией.Мы можем предотвратить это, оставив длины одинаковыми, но добавив 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