[英]R - How to vectorize the calculation in a 2d matrix?
我想用值創建一個nxn維矩陣
f = matrix(0,n,n)
for (x in (1:n)) {
for (y in (1:n)) {
f[x,y] = x^2 + y^2
}
}
有沒有一種方法可以對此向量化(避免兩個循環)以加快程序速度?
你可以用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.