我想在一个向量中添加每个元素,每个元素在另一个向量中,如下所示,但避免使用for循环。有一个简单的方法吗?
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)
此致 布赖恩
答案 0 :(得分:11)
您要找的是outer()
,如:
> 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
答案 1 :(得分:3)
您可以将b
放入矩阵中,并利用R的回收规则:
a + matrix(b, nrow=length(a), ncol=2, byrow=TRUE)
答案 2 :(得分:3)
这是你可以做的一件事:
a<-c(1:10)
b<-c(3:4)
matrix(b,length(a),2,byrow=TRUE)+a