私の質問は、R で 2 つのラスター間の角度を計算する方法です。ここに再現可能な例と私が得るエラーがあります:
angle <-function(vectora, vectorb){
theta <- acos( sum(vectora*vectorb) / ( sqrt(sum(vectora * vectora)) * sqrt(sum(vectorb * vectorb)) ))
}
raster1 <- raster(ncols=150, nrows=150, xmn=0)
raster1[] <- rnorm(150*150,ncell(1))
raster2 <- raster(ncols=150, nrows=150, xmn=0)
raster2[] <- rnorm(150*150,ncell(2))
r.angle <- overlay(raster1,raster2, filename='tes.tif',fun=function(x,y){angle(x,y)})
エラーメッセージは次のとおりです。
Error in (function (x, fun, filename = "", recycle = TRUE, ...) :
cannot use this formula, probably because it is not vectorized
それをベクトル化するにはどうすればよいですか?