0

我注意到在加载furrr之后raster,我被警告说values被屏蔽了:

The following object is masked from ‘package:raster’:

    values

我不是 100% 相信这是问题所在,但我正在努力raster::extractsf对象上运行

library(raster)
library(sf)
p <- shapefile(system.file("external/lux.shp", package="raster"))
s <- as(p, "sf")
r <- raster(p, ncol=100, nrow=100)
values(r) <- 1:ncell(r)

我可以提取就好了

raster::extract(r, s)

但是当我并行化(版本 1)时出现错误:

library(furrr)
plan(strategy = "multiprocess", workers =2)

future_map(1:2, function(extr){
  raster::extract(r,s)
})

一件奇怪的事情是它似乎可以与sp类型对象一起使用(版本 2)

u<-as(s, "Spatial")

future_map(1:2, function(extr){
  raster::extract(r,u)
})

sf除了在and之间切换之外SpatialPointsDataFrame,我怎样才能让“版本 1”代码工作?

4

1 回答 1

1

工人们没有装载sf包裹。使用.options = furrr_options(packages = "sf").

重现问题:

future_map(1:2, function(x){
  raster::extract(r,s)
})
#> Error in as(from, "Spatial"): no method or default for coercing "sf" to "Spatial"

解决方案:

future_map(1:2, .options = furrr_options(packages = "sf"), function(x){
  raster::extract(r,s)
})
于 2021-09-28T13:13:24.573 回答