如何在R中添加两个向量而不重复?
问题描述:
我有两个不同大小的向量,我想添加它们,但不要重复较短的一个 - 相反,我希望“缺失”数字为零。如何在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
正如使用不等长向量时的警告:您需要确保它们排队。如果你不能确定,那么我会建议一种不同的方法(例如找到某种关键)。 – Shane 2010-02-22 15:45:14