我正在使用带有 .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)
关于带有 .combine=rbindlist 的 R foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17411223/