Назначить значения наложения в R? - PullRequest
1 голос
/ 11 июня 2019

Моя проблема заключается в назначении значений для наложения.

  library(raster)
  beginCluster(10)
  r <- raster(ncol=10, nrow=10)
  r1 <- init(r, fun=runif)
  r2 <- init(r, fun=runif)
  s=stack(r1,r2,r2,r1,r2,r1)
  wi=c(3,5,7)


  fun1 = function(x) {overlay(x, fun=function(x) movingFun(x, fun=mean, n=3))}
  vm = clusterR(s, fun1, progress = "text")

без проблем!

, но когда я назначаю n на wi, это не работает

 for(i in 1:3) {
   fun1 = function(x) {overlay(x, fun=function(x) movingFun(x, fun=mean, n=wi[i]))}
   vm = clusterR(s, fun1, progress = "text")
 }

Я получил эту ошибку

не может использовать эту формулу, возможно, потому что она не векторизована "

1 Ответ

2 голосов
/ 11 июня 2019

Все, что находится внутри функции, должно быть передано ей - она ​​ничего не получает из вашей среды из-за того, как работает кластер.

Итак, передайте wi и i вашей функции:

fun2 = function(x, wi, i) {
    overlay(x, 
     fun=function(x) movingFun(x, fun=mean, n=wi[i]))}

и перечислите их как аргументы в вызове clusterR:

for(i in 1:3){
 vm = clusterR(s, fun2, list(wi, i), progress = "text")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...