2011-07-29 12 views
7

每當我在R中看到關於並行處理的問題時,它都會使用foreach函數。由於for環路不是非常類似於R的,是否有平行版本的apply,如果有的話,它爲什麼不是更受歡迎?R平行擴展是否打破了「應用」隱喻?

+0

在我的情況下,'foreach'的吸引力在於它允許我將多個變量傳遞給函數,選擇如何組合結果並且比'apply'等價物更具可讀性。我不知道他們在速度方面的差異。 – Backlin

+0

@Backlin:但同樣的批評可以用'for'和'apply'(非並行版本)來形容,人們爭論這個申請系列。它與速度的東西一樣是一種風格的東西...... –

回答

9

還有的*apply衆多並行版本,在雪開始

  • parLapply()
  • 多核
  • mclapply()
  • 在RMPI

以及專用軟件包,如papply

  • mpi.apply()(可能不再保持)。

  • +0

    它們是如此容易使用,那麼沒有人會問他們有什麼問題嗎? :-)也許這只是過去幾周,但有很多關於這些問題的foreach問題。在SO上搜索這三個結果只能得到mclapply()的結果,而不是那麼多。 –

    +0

    您可以從一份調查報告開始,例如[JSS中的這一份](http://www.jstatsoft.org/v31/i01/paper)。 –

    +0

    這是一張方便的紙張。 –

    1

    @Dirk是正確的。我想補充一點,plyr包現在支持並行後端。

    plyr包的情況下,可能會出現這樣的情況,因爲在並行後端放入數據並不需要考慮:它只是一個標誌。

    +0

    我想你可能是對的,它沒有得到任何提及,因爲它只是起作用。爲什麼它不適用於apply?最終,這似乎是一個正確的比喻:讓圖書館處理並行化,所有用戶所要做的就是決定他們是否想要它平行運行...... –

    +0

    實際上,這些功能的一部分是相當新的,人們只是開始採用它。 – Iterator

    +0

    是的,但是foreach似乎是他們中最新的,並且它是獲得所有關注的人。 –