I would like to add each element in one vector with each element in another vector as follows, but avoid the for loops. Is there a simple method?
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)
Sincerely, Brian
What you are looking for is outer()
, as 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
You can put b
in a matrix and take advantage of R's recycling rules:
a + matrix(b, nrow=length(a), ncol=2, byrow=TRUE)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With