R - 如何在2d矩阵中矢量化计算?

时间:2014-01-24 09:23:59

标签: r

我想创建一个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
    }
}

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

2 个答案:

答案 0 :(得分:5)

您可以使用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

答案 1 :(得分:1)

这个怎么样?

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