我有两个不同大小的R向量,我想把它们相加,但是不重复较短的向量——相反,我希望“缺失”的数字变成零。
例如:
x<-c(1,2)
y<-c(3,4,5)
z<-x+y
现在,
z
的值为4 6 6
,但我希望将其变为4 6 5
。> length(x) <- length(y)
> x
[1] 1 2 NA
> x + y
[1] 4 6 NA
> x[is.na(x)] <- 0
> x + y
[1] 4 6 5
或者,作为一个函数:
add.uneven <- function(x, y) {
l <- max(length(x), length(y))
length(x) <- l
length(y) <- l
x[is.na(x)] <- 0
y[is.na(y)] <- 0
x + y
}
> add.uneven(x, y)
[1] 4 6 5
考虑到你只是在将两个向量相加,更直观的方式可能是像这样处理它:
> `%au%` <- add.uneven
> x %au% y
[1] 4 6 5
这里有另一个使用rep函数的解决方案:
x <- c(x, rep(0, length(y)-length(x)))
x + y