2013-02-04 16 views
7

multicore機能paralleldata.tableを使用しようとしていますが、これを行うには適切な方法を考え出すことができません。コード:マルチコアと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 

私はこの上collect()を呼びたいんだろうが、これらはもはやparallelオブジェクトです。これをどうすればいいのですか?

+0

'x = dtb [、collect(parallel(a + 1))、by = b]'の何が問題なのですか? – Ryogi

+0

並列処理が完了するのを待ちます – Alex

+0

@alex parallel()を待っているcollect()が問題である理由を理解するのは難しいです。実際の問題にあなたの例を外挿することは難しいので、これから本当に欲しいものを知ることは難しいです。私たちの理解を助けることができますか? – ndoogan

答えて

2

私は、これはあなたが何をしたいのラインに沿っていると思う:

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

あなたは彼らにからに変換されたので、あなたは、それ以上parallelオブジェクトを持っていなかったとcollectを実行することができなかった理由は、 a listに格納するのではなく、上で行ったことです。