Rには、kxmの行列と文字列構造の行列をとり、各要素が三角形を定義する3xmの行列であるリストを返す関数mesh2listri()私は本当にこの機能をスピードアップしたいと思います。しかし、私はforループを回避する方法を理解することはできません。助けを前にありがとう。以下は、完全に再現可能な例です。メッシュからメッシュの三角形のリストを作成するための関数を高速化するR
mesh2listri <- function(mat, tri) {
if (ncol(tri) > 3) {
tri <- t(tri)
}
res <- NULL
for (i in 1:nrow(tri)) {
resi <- mat[tri[i, ], ]
res <- c(res, list(resi))
print(i)
}
res
}
mat <- matrix(rnorm(90000, 0, 1), ncol = 3)
tri <- matrix(sample(1:30000, replace = TRUE), ncol = 3)
system.time(mesh2listri(mat, tri))
うわー!これはすごく速いです!どうもありがとう! –
あなたは歓迎です:)私が言ったように、それが他のディメンションで動作するかどうかを確認するには、 'lapply()'コールで 'ncol'パラメータを変更する必要があります。 Embarassingly、私は行列代数ではうまくいきません... – LAP