2013-02-04 151 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,而不是將它們存儲在列表中,這是我在上面做的。