xbs*_*bsd 15 r data.table
我使用foreach和.combine = rbindlist.这似乎不起作用,但如果我使用.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
Run Code Online (Sandbox Code Playgroud)
有没有人能够做到这一点?
提前致谢.
edd*_*ddi 19
这基本上就是你说的 - 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)
Run Code Online (Sandbox Code Playgroud)
如果你想利用rbindlist,那么这样做的方法是:
rbindlist(foreach (i = 1:3) %dopar% unique(t2))
Run Code Online (Sandbox Code Playgroud)
或这个:
foreach (i=1:3, .combine=function(x,y)rbindlist(list(x,y))) %dopar% unique(t2)
Run Code Online (Sandbox Code Playgroud)
Cla*_*nJY 11
这是一种使用rbindlist作为.combine函数的方法,并具有.multicombine=TRUE:
foreach (i=1:3,
.combine=function(...) rbindlist(list(...)),
.multicombine=TRUE) %dopar% unique(t2)
Run Code Online (Sandbox Code Playgroud)
如果你有一个相当数量的单独结果聚合,这可能比仅一次两个组合快得多.
对于单个foreach语句,这会产生与使用rbindlist列出和包装foreach默认值相同的结果.combine,如eddi的第一个解决方案.我不确定哪个更快,但我希望它们接近.
对于foreach我喜欢包装的小型单一作业rbindlist,但是当我将几个链接foreach在一起时,%:%我认为上述方法(可能在第一个方面foreach)看起来更清晰.
| 归档时间: |
|
| 查看次数: |
11066 次 |
| 最近记录: |