5 Stimmen

Jedes Element eines Vektors mit jedem Element eines zweiten Vektors addieren

Ich möchte jedes Element in einem Vektor mit jedem Element in einem anderen Vektor wie folgt addieren, sondern die for-Schleifen zu vermeiden. Gibt es eine einfache Methode?

vadd <- function(vrow, vcol){
vmatrix <- matrix(nrow = length(vrow), ncol = length(vcol))
for(r in 1:length(vrow)){#rows
    for(c in 1:length(vcol)){#columns
        vmatrix[r, c] <- vrow[r] + vcol[c]
    }
}
return(vmatrix)
}

a <- c(1:10)
b <- c(3:4)
vadd(a, b)

Mit freundlichen Grüßen, Brian

12voto

Gavin Simpson Punkte 163780

Was Sie suchen, ist outer() , wie in:

> outer(a, b, "+")
      [,1] [,2]
 [1,]    4    5
 [2,]    5    6
 [3,]    6    7
 [4,]    7    8
 [5,]    8    9
 [6,]    9   10
 [7,]   10   11
 [8,]   11   12
 [9,]   12   13
[10,]   13   14

3voto

Joshua Ulrich Punkte 167720

Sie können b in einer Matrix und nutzen Sie die Recyclingregeln von R:

a + matrix(b, nrow=length(a), ncol=2, byrow=TRUE)

3voto

Sacha Epskamp Punkte 44955

Hier ist eine Sache, die Sie tun können:

a<-c(1:10)
b<-c(3:4)

matrix(b,length(a),2,byrow=TRUE)+a

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X