带有 .combine=rbindlist 的 R foreach

标签 r data.table

我正在使用带有 .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/

相关文章:

r - 将行选择字符串传递到 data.table

r - 使用 grep 对 data.table 中的行进行子集化,比较行内容

r - 如何在 R 中构建多标准索引,结合 > 和 < 运算符?

r - 如何更改 ggplot geom_histogram() 中的直方图边界线厚度

r - 在一列中查找正则表达式并添加到同一数据框中的新列

r - 如何在R中的list()中滑动元素的长度?

r - 有没有一种方法可以使用emacs安装R软件包?

r - data.table 不再通过引用更新

r - 填充图中水平线上方和下方的区域

r - 有没有一种简单的方法来实现类似于 `x[,c:=mean(a), by=b]$c` 的东西?