更新:插入符现在在foreach
内部使用,因此此问题不再真正相关。如果您可以为其注册一个工作的并行后端foreach
,则插入符号将使用它。
我有用于R 的插入符号包,使用该train
函数交叉验证我的模型很有趣。但是,我想加快处理速度,看来插入符号为并行处理提供了支持。在Windows计算机上访问此功能的最佳方法是什么?我有doSMP软件包,但是我不知道如何将foreach
函数转换为lapply
函数,因此可以将其传递给train
函数。
这是train
文档中我想要执行的示例:这正是我想要执行的操作,但使用的是doSMP
包而不是doMPI
包。
## A function to emulate lapply in parallel
mpiCalcs <- function(X, FUN, ...)
}
theDots <- list(...)
parLapply(theDots$cl, X, FUN)
{
library(snow)
cl <- makeCluster(5, "MPI")
## 50 bootstrap models distributed across 5 workers
mpiControl <- trainControl(workers = 5,
number = 50,
computeFunction = mpiCalcs,
computeArgs = list(cl = cl))
set.seed(1)
usingMPI <- train(medv ~ .,
data = BostonHousing,
"glmboost",
trControl = mpiControl)
这是mbq函数的一个版本,它使用与lapply文档相同的变量名:
felapply <- function(X, FUN, ...) {
foreach(i=X) %dopar% {
FUN(i, ...)
}
}
x <- felapply(seq(1,10), sqrt)
y <- lapply(seq(1,10), sqrt)
all.equal(x,y)