根据以前的结果并行化for循环
我刚刚开始使用包根据以前的结果并行化for循环,r,parallel-processing,R,Parallel Processing,我刚刚开始使用包parallel和foreach()函数。因此,这个问题将是相当愚蠢的。这是我要完成的任务: 将函数应用于对象t 在下一次迭代中使用结果 一个简单的例子是: newFunc<-function(){ test[i+1] <<- sqrt(test[i]) } test <- c(1,rep(NA, 10)) foreach(i=1:11, .combine='rbind', .export='test')%do% newFunc() newF
parallel
和foreach()
函数。因此,这个问题将是相当愚蠢的。这是我要完成的任务:
t
newFunc<-function(){
test[i+1] <<- sqrt(test[i])
}
test <- c(1,rep(NA, 10))
foreach(i=1:11, .combine='rbind', .export='test')%do% newFunc()
newFunc确实,提出的迭代不是并行运行的,而是
test = numeric(11); test[] = 2
test^(1/2^(0:10))
是您感兴趣的解决方案。这很容易并行化(尽管不必要,因为计算已经矢量化了)
fun = function(i, test)
test[i] ^ (1 / 2^(i - 1))
unlist(mclapply(seq_along(test), fun, test))
对于并行计算,fun
不应该更新非局部变量(就像你对所做的那样,我不明白。如果迭代的每一步都依赖于前一步,你就不能并行进行。好吧,我想这已经回答了我的问题!thx
fun = function(i, test)
test[i] ^ (1 / 2^(i - 1))
unlist(mclapply(seq_along(test), fun, test))