将每个元素添加到一个向量中,每个元素放在第二个向量中

时间:2011-03-14 12:05:41

标签: r

我想在一个向量中添加每个元素,每个元素在另一个向量中,如下所示,避免使用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)

此致 布赖恩

3 个答案:

答案 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