【问题标题】:Add each element in one vector with each element in a second vector将一个向量中的每个元素与第二个向量中的每个元素相加
【发布时间】:2011-03-14 12:05:41
【问题描述】:

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

真诚地, 布赖恩

【问题讨论】:

    标签: r


    【解决方案1】:

    你要找的是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
    

    【讨论】:

    • 不错。感谢大家的帮助。这些都很棒。
    • @user658733 如果三个答案之一解决了您的问题,您可以选择一个并接受吗?要接受答案,请单击答案左侧显示投票数附近的勾号/复选标记。这样做的主要原因是,如果其他人通过搜索找到您的 Q,他们就会知道您的问题是否得到了满意的回答?
    【解决方案2】:

    您可以将b 放在一个矩阵中,并利用 R 的回收规则:

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

    【讨论】:

      【解决方案3】:

      这是您可以做的一件事:

      a<-c(1:10)
      b<-c(3:4)
      
      matrix(b,length(a),2,byrow=TRUE)+a
      

      【讨论】:

        猜你喜欢
        • 2012-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多