Вот сравнение по времени.
Пример данных (немного сложнее, чтобы все значения не были одинаковыми)
library(raster)
f <- system.file("external/rlogo.grd", package="raster")
s <- stack(f)+1
r.logo <- stack(s/2, s, s*2)
Я только вычисляю Тау здесь. Сначала с raster.kendall
library(spatialEco)
system.time(
logo.trend1 <- raster.kendall(r.logo, tau=TRUE)
)
# user system elapsed
# 6.73 0.00 6.72
Теперь с calc
и базовой cor
функцией
nl <- 1:nlayers(r.logo)
kfun <- function(i) {
cor(nl, i, method="kendall")
}
system.time(
logo.trend2 <- calc(r.logo, kfun)
)
# user system elapsed
# 0.51 0.00 0.51
Это в 13 раз быстрее. Сейчас параллельно
beginCluster(n=4)
system.time(
logo.trend.parallel <- clusterR(r.logo, calc, args=list(fun=kfun), export="nl")
)
# user system elapsed
# 0.05 0.05 0.69
endCluster()
Нет выигрыша во времени, но это ожидается для небольшого набора данных и может отличаться от большого набора данных.