2013-02-04 104 views
7

我试图使用multicore函数paralleldata.table,我无法完全想出正确的方法来做到这一点。代码:R中的多核和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 

我想呼吁这collect()但这些都不再parallel对象。应该怎么做?

+0

'x = dtb [,collect(parallel(a + 1)),by = b]'? – Ryogi

+0

等待并行完成 – Alex

+0

@alex很难理解为什么collect()等待parallel()是一个问题。把你的例子推断出一个真正的问题也很困难,因此知道你真正想从中得到什么。你能帮助我们理解吗? – ndoogan

回答

2

我觉得这是线沿线的你想要什么:

collect(dtb[, list(jobs = list(parallel(a+1))), by = b][, jobs]) 

你没有parallel对象的任何越来越不能运行collect是因为你把它们转换原因一个list,而不是将它们存储在列表中,这是我在上面做的。