2013-02-04 25 views
7

Sto tentando di utilizzare la funzione multicoreparallel con data.table e non riesco a trovare il modo giusto per farlo. Codice:multicore e data.table in R

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 

vorrei chiamare collect() su questo, ma questi non sono più parallel oggetti. Come si dovrebbe fare questo?

+0

Cosa c'è di sbagliato in 'x = dtb [, collect (parallel (a + 1)), di = b]'? – Ryogi

+0

raccoglie le attese per il parallelo per finire – Alex

+0

@alex è difficile capire perché collect() in attesa di parallel() è un problema. È anche difficile estrapolare il tuo esempio da un problema reale e quindi sapere cosa vuoi veramente da questo. Puoi aiutarci a capire? – ndoogan

risposta

2

credo che questo sia lungo le linee di ciò che si vuole:

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

Il motivo non ha avuto parallel oggetti più e non poteva correre un collect è perché li stavano convertendo - a list, invece di archiviarli in un elenco, che è quello che ho fatto sopra.