【发布时间】:2018-11-15 13:03:41
【问题描述】:
我想在 for 循环的第一步中执行命令,并在同一个 for 循环的所有步骤中执行其他命令列表。在非并行循环中很容易做到这一点:
for (i in 1:5) {
if (i == 1) {
print("First step")
}
print("Same code")
}
但我想并行执行for循环,即写foreach循环,这意味着i对于所有节点(进程)不会等于1。非并行foreach循环是:
library(foreach)
foreach(i = 1:5) %do% {
if (i == 1) {
print("First step")
}
print("Same code")
}
如何在每个节点的第一步中执行print("First")?
【问题讨论】:
-
只执行第一步然后才并行化怎么样?
-
我认为这行不通,因为最后我必须在 Azure 批处理上执行这段代码,所以一切都应该在一个 foreachloop 中。
-
嗯,我不太清楚。您始终可以创建一个仅包含一个步骤的循环。我想你应该更好地描述你的需求。
-
我需要 n 个步骤的循环,而不是一个。但是应该只在第一步中执行几行代码,而在所有步骤中都应该执行其他代码。一切都应该在一个 for(each) 循环中并并行执行(这意味着对于某些进程,首先 i 将是 2、3 等)。更具体地说,我需要在第一步中使用 RSelenium 设置 Web 驱动程序,而不是在所有其他步骤中使用它,但我认为第一步的代码是什么并不重要?
标签: r for-loop foreach parallel-processing