R中的多核和data.table

Ale*_*lex 7 fork multicore r data.table

我试图使用multicore函数parallel,data.table我无法想出正确的方法来做到这一点.码:

require(multicore)
require(data.table)
dtb = data.table(a=1:10, b=1:2)
x = dtb[,parallel(a+1),by=b]

> x
   b   pid fd
1: 1 12243  3
2: 1 12243  6
3: 2 12247  4
4: 2 12247  8
Run Code Online (Sandbox Code Playgroud)

我想呼吁collect(),但这些不再是parallel对象.怎么应该这样做?

edd*_*ddi 4

我认为这符合你想要的:

collect(dtb[, list(jobs = list(parallel(a+1))), by = b][, jobs])
Run Code Online (Sandbox Code Playgroud)

parallel您不再拥有对象并且无法运行 a 的原因collect是因为您将它们转换a list,而不是将它们存储列表中,这就是我上面所做的。