簡體   English   中英

R中的並行處理

[英]Parallel processing in R

我正在使用自定義隨機森林函數,該函數需要一組基因組數據(約56k列)中的起點和終點。

我想將列號分為多個子組,並允許每個子組分別處理以加快處理速度。 我使用以下代碼嘗試了此操作(未成功):

library(foreach)
library(doMC)
foreach(startMrk=(markers$start), endMrk=(markers$end)) %dopar% 
    rfFunction(genoA,genoB,0.8,ntree=100,startMrk=startMrk,endMrk=endMrk)

其中startMrk是數字變量數組: 1 4 8 12 16和endMrk是另一個數組: 3 7 11 15 19

對於此示例,我希望一個內核運行1:3的樣本,另一個內核運行4:7的樣本,依此類推。我對R中的並行處理的想法是陌生的,所以我很樂於研究任何文檔可用。 有人對並行處理或上面的代碼缺少我的建議嗎?

這里的基本要點是,您正在將列拆分為大塊。 首先,最好在每次迭代時對數據集進行適當的分塊,然后將這些分塊輸入到RF中。 另外,foreach的工作方式與for一樣,因此代碼可以

rfs=vector('list',4)
foreach(i=1:4) %dopar% {
  ind <- markers$start[i]:markers$end[i]
  rfs[[i]] <- randomForest(genoA[,ind],genoB[,ind], 0.8, ntree=100)
}

我在常規randomForest中提供了此功能,但是您可以通過簡單的方式將其包裝到您的自定義代碼中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM