我正在使用带有.combine = rbindlist的foreach。尽管我使用.combine = rbind可以正常工作,但这似乎不起作用。

只是用一个简单的例子来说明-

> t2 <- data.table(col1=c(1,2,3))
> foreach (i=1:3, .combine=rbind) %dopar% unique(t2)
   col1
1:    1
2:    2
3:    3
4:    1
5:    2
6:    3
7:    1
8:    2
9:    3

# But using rbindlist gives an error

> foreach (i=1:3, .combine=rbindlist) %dopar% unique(t2)
error calling combine function:
<simpleError in fun(result.1, result.2): unused argument(s) (result.2)>
NULL


有人能做这项工作吗?

提前致谢。

最佳答案

基本上就是您所说的-rbindlist假定为list参数,并且得到的错误与此相同:

result.1 = data.table(blah = 23)
result.2 = data.table(blah = 34)

rbindlist(result.1, result.2)
#Error in rbindlist(result.1, result.2) : unused argument (result.2)


如果您想使用rbindlist,可以采用以下方法:

rbindlist(foreach (i = 1:3) %dopar% unique(t2))


或这个:

foreach (i=1:3, .combine=function(x,y)rbindlist(list(x,y))) %dopar% unique(t2)

09-26 23:15