我想创建一个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
}
}
有没有办法对此进行矢量化(以避免两个循环)来加速程序?
答案 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