我正在使用该foreach
函数遍历的列data.frame
。在每次迭代中,我想获取迭代器的索引(即所考虑的列的索引或名称)和列本身。
但是,下面的代码最初看起来没问题,但由于i
没有names
或colnames
属性而无法正常工作。
foreach(i=iter(base[1:N],by='col')) %dopar% c(colnames(i),i)
现在,如果您想知道为什么我不遍历索引,那是因为我正在使用该%dopar%
工具,并且我不想将整个基础发送给所有工作人员,而是只需要每个工作人员需要的列。
问题:如何获取迭代器的索引?
谢谢
我只需要在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)
}
如果不使用任何参数,则iterators包中的“ icount”函数将返回一个无界计数迭代器,因此无论数据帧中的列数如何,此示例都可以工作。
您还可以将列名称作为第三个迭代变量:
r <- foreach(d=df, i=icount(), nm=colnames(df)) %do% {
list(d=d, i=i, nm=nm)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句