如何在R中添加两个向量而不重复?

如何在R中添加两个向量而不重复?

问题描述:

我有两个不同大小的向量,我想添加它们,但不要重复较短的一个 - 相反,我希望“缺失”数字为零。如何在R中添加两个向量而不重复?

例子:

x<-c(1,2) 
y<-c(3,4,5) 
z<-x+y 

现在,z4 6 6,但我想它只是4 6 5

+0

正如使用不等长向量时的警告:您需要确保它们排队。如果你不能确定,那么我会建议一种不同的方法(例如找到某种关键)。 – Shane 2010-02-22 15:45:14

我会让他们平等的长度,然后将它们添加:

> 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