如何避免R snow / snowfall包中的参数名称冲突,sfSapply?

时间:2015-07-15 14:08:21

标签: r parallel-processing raster r-raster

我尝试使用snowsnowfall软件包,特别是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参数混淆?

1 个答案:

答案 0 :(得分:1)

一种解决方法是创建一个内置这些参数的自定义提取函数:

sfRasterExtract=function(raster_obj){
extract(raster_obj, sp=TRUE, fun=mean, y=tracts)
}

确保在sfInit之后使用sfExportAll()将函数导入到您将使用的所有实例,然后运行

a <- sfSapply(queue, sfRasterExtract)