Ada*_*ski 5 foreach iterator r
我有两个长度相等的对象(一个是通过解析JSON生成的列表,另一个是数组的多维切片),例如:
library(rjson)
library(foreach)
iter1<-iter( fromJSON(file=jsonfilename)$someJSONarray )
iter2<-iter( myarr, by="row" )
Run Code Online (Sandbox Code Playgroud)
我需要能够执行以下操作:
out=foreach(x=zipiter(iter1,iter2),combine=list) %do%
{
#Do stuff with elements from both iterators accessed by e.g. x[[1]] and x[[2]]
}
Run Code Online (Sandbox Code Playgroud)
是否有任何标准的方法(例如在带有boost Zip迭代器的Python / C ++中)?
包中有一个izip函数itertools可以执行您描述的操作:
library(itertools)
out <- foreach(x=izip(iter1, iter2)) %do% {
# x[[1]] contains a value from iter1
# x[[2]] contains a value from iter2
}
Run Code Online (Sandbox Code Playgroud)
但是我更愿意指定多个循环变量foreach:
out <- foreach(x=iter1, y=iter2) %do% {
# x contains a value from iter1
# y contains a value from iter2
}
Run Code Online (Sandbox Code Playgroud)
两种解决方案都并行地迭代来自迭代器的值。如果要在列表中使用两个参数,则izip更加方便。