我试图通过hargreaves
方法来计算蒸发内package SPEI
。这包括使用最小温度(TMIN
)和 上限温度(TMAX
)。并行计算是我最好的选择,因为Tmin
和Tmax
rasterstacks
有500,000 cells and 100 layers each
。 Hargreaves function
以Tmin
,Tmax
和latitude
在each grid
作为输入。以下是我的第一个猜测如何去了解这一点:parLapply多个参数ř
library(SPEI)
# go parallel
library(parallel)
clust <- makeCluster(detectCores())
#har <- hargreaves(TMIN,TMAX,lat=37.6475) # get evaporation for a station.
然而,我的数据网格化。
Tmin
Tmax
和是列表中,在Tmin
Tmax
和每个数据帧具有附加给它的$latitude
。在pet
,k$d
是三甲基铟,k$d
的最高温度(也许我应该提供两个参数在pet
例如function(k,y)
而不只是k
?)
pet <- function(k) {
hargreaves(k$d,k$d, k$latitude, na.rm=TRUE)}
# Make library and function available to clust
clusterEvalQ(clust, library(SPEI))
clusterExport(clust, pet)
pet_list <- parLapply(clust, TMIN,TMAX, pet)
parLapply
只接受一个参数。我如何通过Tmin
和Tmax
到parLapply
? 是否我的宠物功能不正确?
谢谢。
你也可以看看'clusterMap'在同一个包中。 – lmo