【问题标题】:R - How to vectorize the calculation in a 2d matrix?R - 如何向量化二维矩阵中的计算?
【发布时间】:2014-01-24 17:35:55
【问题描述】:

我想用值创建一个 n x n 维矩阵

f = matrix(0,n,n)
for (x in (1:n)) {
    for (y in (1:n)) {
        f[x,y] = x^2 + y^2
    }
}

有没有办法对此进行矢量化(以避免两个循环)以加快程序速度?

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以使用outer

    outer(x, y, function(x, y) x^2 + y^2)
    

    例如

    x <- 1:4
    y <- 2:5
    outer(x, y, function(x, y) x^2 + y^2)
         [,1] [,2] [,3] [,4]
    [1,]    5   10   17   26
    [2,]    8   13   20   29
    [3,]   13   18   25   34
    [4,]   20   25   32   41
    

    【讨论】:

      【解决方案2】:

      这个怎么样?

      n <- 10
      M <- matrix(rep(1:n,n), ncol=n, byrow=T)
      f <- (M**2)+t((M**2))
      f
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-30
        • 1970-01-01
        • 2021-04-12
        • 2016-10-30
        相关资源
        最近更新 更多