Ошибка в R: функция Foreach: "plot.new еще не был вызван" - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь разработать функцию R для параллельного выделения многоугольников с помощью команды foreach:

  library(deldir); library(plyr); library(rgdal);
  library(doParallel);library(foreach); 

  #Detecting the number of cores available
  num_cores <- detectCores() - 1
  clust <- makeCluster(num_cores, type = "PSOCK")
  registerDoParallel(clust)

  Shape <- readOGR(dsn = ".\\Data\\greatlakes_subbasins",
                   layer = "greatlakes_subbasins")

  idpoly <- lapply(Shape@polygons , slot , "ID")
  plot(Shape, axes=T, asp=1)

  foreach(j = 1 : iter(idpoly)$length, .packages = c('deldir','plyr','rgdal')
  ) %dopar% {

      #print(j)
      coord <- Shape@polygons[[j]]@Polygons[[1]]@coords         
      coord <- coord[-1,] 

      points(coord,col="orange",pch=20, cex=2)
      box()

  }
  stopCluster(clust)

Однако я получаю сообщение об ошибке:

Error in { : task 1 failed - "plot.new has not been called yet"

Я ушелиз-за схожих проблем, обсуждаемых на других форумах, и переполнения стека, и, похоже, это указывает на то, что это, вероятно, проблема с функцией plot (), вызываемой вне foreach, и points () выполняется без доступа к plot ().

Может кто-нибудь дать мне знать, если я иду в правильном направлении?Кроме того, если есть какие-либо предложения, чтобы обойти это.

Ссылка на шейп-файл

enter image description here

...