获取R中迭代器的索引(与foreach并行)

Ant*_*lot 3 indexing parallel-processing foreach iterator r

我正在使用该foreach函数迭代a的列data.frame.在每次迭代中,我想得到迭代器的索引(即索引或所考虑的列的名称)和列本身.

但是,下面的代码看起来很好,但是没有用,因为i没有namescolnames属性.

 foreach(i=iter(base[1:N],by='col')) %dopar% c(colnames(i),i)
Run Code Online (Sandbox Code Playgroud)

现在,如果你想知道我为什么不迭代索引,原因是我正在使用该%dopar%工具而我不想将整个基础发送给所有工作者,而只需要每个工作者都需要的列.

问题:如何获取迭代器的索引?

谢谢

Ste*_*ton 6

我只想在foreach循环中指定第二个迭代变量作为计数器:

library(foreach)
library(iterators)

df <- data.frame(a=1:10, b=rnorm(10), c=runif(10))
r <- foreach(d=df, i=icount()) %do% {
    list(d=d, i=i)
}
Run Code Online (Sandbox Code Playgroud)

如果没有使用参数,iterators包中的"icount"函数将返回一个无界计数迭代器,因此无论数据框中的列数如何,此示例都有效.

您还可以将列名称包含为第三个迭代变量:

r <- foreach(d=df, i=icount(), nm=colnames(df)) %do% {
    list(d=d, i=i, nm=nm)
}
Run Code Online (Sandbox Code Playgroud)