1
我的问题是如何计算R中两个栅格之间的角度? 这里是一个reproductible例子,我得到的错误:两个栅格之间的计算角度
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
我怎样才能像矢量化?
也许,如果添加在您的函数'回报(THETA)'声明,并应用'angle'函数为'r.angle < - 覆盖(raster1,raster2,文件名='tes.tif',fun =函数(x,y){mapply(angle,x [],y [])})'?此外,在我的电脑中,我不得不将文件名更改为'tes.tiff'来查看文件。 –
感谢这使得它的工作 – WAF