我尝试使用snow
和snowfall
软件包,特别是sfSapply()
函数从多个光栅文件中提取数据。它看起来像这样:
queue <- list(rast1, rast2, rast3)
sfInit(parallel=TRUE, cpus=3)
sfLibrary(raster)
sfLibrary(rgdal)
sfLibrary(sp)
a <- sfSapply(queue, extract, sp=TRUE, fun=mean, y=tracts)
sfStop()
传递给fun
的{{1}}参数用于sfSapply()
函数(在extract()
库中)。但是,raster
也会使用sfSapply()
参数(fun
);在这个例子中,我提供了它作为第二个位置参数。
如何为传递的函数指定extract()
参数,而不是与fun
期望的fun
参数混淆?
答案 0 :(得分:1)
一种解决方法是创建一个内置这些参数的自定义提取函数:
sfRasterExtract=function(raster_obj){
extract(raster_obj, sp=TRUE, fun=mean, y=tracts)
}
确保在sfInit之后使用sfExportAll()将函数导入到您将使用的所有实例,然后运行
a <- sfSapply(queue, sfRasterExtract)