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

Kar*_*lek 7 r vector

我有两个不同大小的R矢量,我想添加它们,但不重复较短的一个 - 相反,我希望"缺失"数字为零.

例:

x<-c(1,2)
y<-c(3,4,5)
z<-x+y 
Run Code Online (Sandbox Code Playgroud)

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

Sha*_*ane 13

我会让它们等长,然后添加它们:

> 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
Run Code Online (Sandbox Code Playgroud)

或者,作为一个功能:

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
Run Code Online (Sandbox Code Playgroud)

鉴于您只是添加了两个向量,使用它可能更直观:

> `%au%` <- add.uneven
> x %au% y
[1] 4 6 5
Run Code Online (Sandbox Code Playgroud)

这是使用rep的另一个解决方案:

x <- c(x, rep(0, length(y)-length(x)))
x + y
Run Code Online (Sandbox Code Playgroud)