【发布时间】: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
我想用值创建一个 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
你可以使用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
【讨论】:
这个怎么样?
n <- 10
M <- matrix(rep(1:n,n), ncol=n, byrow=T)
f <- (M**2)+t((M**2))
f
【讨论】: