Je cherche à calculer l'évaporation par hargreaves
procédé dans les package SPEI
.Cet consiste à utiliser la température minimale (TMIN
) et température maximale (TMAX
). Le calcul parallèle est mon meilleur pari étant donné que Tmin
et Tmax
rasterstacks
ont 500,000 cells and 100 layers each
. Hargreaves function
prend Tmin
, Tmax
et latitude
à each grid
comme entrée. Ce qui suit est ma première supposition comment aller à ce sujet:parLapply multiples arguments R
library(SPEI)
# go parallel
library(parallel)
clust <- makeCluster(detectCores())
#har <- hargreaves(TMIN,TMAX,lat=37.6475) # get evaporation for a station.
Cependant, mes données sont maillées.
Tmin
et Tmax
sont la liste, chaque trame de données dans Tmin
et Tmax
a un $latitude
attaché. En pet
, k$d
est Tmin, k$d
est Tmax (peut-être que je devrais fournir deux arguments pet
par exemple function(k,y)
au lieu de simplement 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
accepte un seul argument. Comment puis-je passer Tmin
et Tmax
à parLapply
? Est-ce que ma fonction d'animal de compagnie n'est pas correcte?
Merci.
Vous pouvez également jeter un oeil à 'clusterMap' dans le même paquet. – lmo