- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 hargreaves
计算蒸发量package SPEI
中的方法.这涉及使用最低温度( TMIN
)和最高温度 ( TMAX
)。鉴于Tmin
,并行计算是我最好的选择和Tmax
rasterstacks
有500,000 cells and 100 layers each
。 Hargreaves function
需要Tmin
, Tmax
和latitude
在each grid
作为输入。以下是我的第一个猜测:
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
是 Tmin,k$d
是 Tmax (也许我应该在 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
?难道是我的宠物功能不正确?
谢谢。
最佳答案
索引可用于引用全局定义的data.frame
中的行。我在下面举一个例子。
library(SPEI)
library(parallel)
定义测试列表。
Tmin <- list(aa = data.frame(a=1:30, b1=runif(30), b2=runif(30), latitude=runif(30)),
bb = data.frame(a=1:30, b1=runif(30), b2=runif(30), latitude=runif(30)))
Tmax <- list(aa = data.frame(a=1:30, b1=runif(30), b2=runif(30), latitude=runif(30)),
bb = data.frame(a=1:30, b1=runif(30), b2=runif(30), latitude=runif(30)))
创建集群
clust <- makeCluster(2)
这是重写的函数,但我们将在更简单的函数上测试它。
pet1 <- function(ind){
Tmin[[ind]]$a + Tmax[[ind]]$a
}
调用SPEI
库并将工作区中的所有内容发送到每个CPU。这通常不是很好的形式,所以请原谅我。
clusterEvalQ(clust, library(SPEI))
clusterExport(clust, ls())
运行parLapply
函数
pet_test <- parLapply(clust, 1:length(Tmin), pet1)
编辑:编辑以说明列表中的 Tmin 和 Tmax。核心思想是相同的,即使用索引作为 pet 函数的一个参数,并从 pet 内部引用全局变量。
关于r - parLapply 多个参数 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599919/
我目前正在开发一个 R 包,它将通过“并行”包使用并行计算来解决一些任务。 在使用包的函数内部定义的集群时,我遇到了一些非常尴尬的行为,其中 parLapply 函数将工作分配给一个工作人员并等待它完
我试图寻找一个重复的问题,我知道很多人都问过 R 中的 parLapply,所以如果我遗漏了一个适用于我的情况的问题,我深表歉意。 问题:我有以下在 R 中正确运行的函数,但是当我尝试使用 parLa
我有一个很大的列表(~30GB)并且功能如下: cl sessionInfo() R version 3.2.2 (2015-08-14) Platform: x86_64-redhat-linux
我正在尝试通过 hargreaves 计算蒸发量package SPEI 中的方法.这涉及使用最低温度( TMIN )和最高温度 ( TMAX )。鉴于Tmin,并行计算是我最好的选择和Tmax ra
假设我想在 R 中做一些通常(在一个进程/线程中)看起来像这样的事情: for(i in 1:2) { for(j in 1:2) { #Do some stuff here
我在这里问了一个相关的问题,回复效果很好:using parallel's parLapply: unable to access variables within parallel code 问题是
我希望在 R6 对象中的窗口上使用 parLapply() ,并注意到(至少在某些情况下)我不需要导出R6 功能或数据到节点。 这是一个示例,我可以在 parLapply() 中访问私有(privat
我在 Linux 上运行并且很容易使用 mclapply。我在使用 parlapply 时遇到了一些错误,即使在使用 clusterEvalQ 之后也是如此。 在我进一步解决这个问题之前,有什么要点吗
我想使用 parLapply 并且我正在设置我的代码,就像这里介绍的那样:http://www.win-vector.com/blog/2016/01/parallel-computing-in-r/
我正在尝试在一个非常大的数据集上运行一些东西。基本上,我想遍历文件夹中的所有文件并在其上运行 fromJSON 函数。但是,我希望它跳过产生错误的文件。但是,我使用 tryCatch 构建了一个函数,
我正在使用 Rcpp 和 Windows 上的并行计算进行 R 代码优化。我在 parLapply 中调用 Rcpp 函数时遇到问题。示例如下 Rcpp 代码(test.cpp) #include
我最近开始在一个项目中使用 R 中的并行技术,并使用 mclapply 在 Linux 系统上运行我的程序。来自 parallel包裹。但是,我对 parLapply 的理解遇到了障碍。对于 Wind
我想并行化我的数据写入过程。我正在将数据框写入 Oracle 数据库。该数据有 400 万行和 8 列。没有并行化的情况下需要 6.5 小时。 当我尝试并行时,出现错误 Error in checkF
我最近得到了一台具有多个内核的计算机,并且正在学习使用并行计算。我相当精通 lapply并被告知 parLapply工作原理非常相似。我没有正确操作它。看来我必须明确地将所有内容都放在 parLapp
我是一名优秀的程序员,十分优秀!