2017-09-04 96 views
1

我試圖從許多函數拉R包。所有工作,包括涉及foreach和do.call的最高級別的工作。出於某種原因,當我打包它們時,它不會找到在第三級嵌套的函數的參數對象。這是錯誤我得到R foreach嵌套函數找不到函數使用do.call參數

Error in { : task 2 failed - "object 'total.dose.params' not found" 

我已經把一兆瓦的https://github.com/jamaas/qmradoparr.git

我試着用.EXPORT和其他所有的莊園,但仍不能讓它找到這個對象。在回購是一個非常小的R腳本稱爲driver1.R應該證明這個問題。

回答

1

您不需要導出任何變量,只需將由foreach使用的每個變量傳遞到其環境(調用foreach的函數)。

我製作了一個pull request包裝。

+0

Thx。這是一個奇怪的現象,當我用你的修改運行它時,它運行良好。當我將後端從doParallel更改爲doMPI時,它失敗了,無法找到一個對象(其中一個函數)。我最近在foreach循環中使用eval(call(「function」))而不是do.call,並且將mpi作爲後端,但現在找不到它。 –

+0

@JimMaas我不知道,對不起。我總是使用'doParallel'。爲什麼你絕對想要使用'doMPI'有沒有原因? –

+0

我確實需要一個大的Linux集羣,希望在多個節點上跨越〜400個核心進行並行處理,這使得MPI很好地工作......如果它工作正常! –