[英]how to use %dopar% when only import foreach in DESCRIPTION of a package
如果在包的描述中僅導入(不依賴)foreach,如何在包的功能中避免“找不到函數”%dopar%“”? 有沒有像foreach ::%dopar%的方式,因為我在函數中使用foreach :: foreach? 謝謝。
代碼如:
在功能上
foreach::foreach(1:9) %dopar% {
...}
在描述中
Imports:
Matrix,
parallel,
foreach,
doParallel
以下對我有用。 如下定義局部%do%
或%dopar%
`%dopar%` <- foreach::`%dopar%`
`%do%` <- foreach::`%do%`
然后你應該能夠跑
foreach::foreach(i = 1:9, .combine = "+") %dopar% {i}
foreach::foreach(i = 1:9, .combine = "+") %do% {i}
你需要使用反引號: foreach::`%dopar%`
(或引號foreach::"%dopar%"
也可以使用)。
@Kevin Zen,
我遇到了同樣的問題,但我想我只是通過使用命名空間文件中的“importFrom”字段來解決它。 我使用Roxygen2來記錄,所以我只是包含了標簽:
#' @importFrom foreach %dopar%
調用foreach函數。它在命名空間文件中創建了一個字段,如下所示:
importFrom(foreach,"%dopar%")
因此,如果您不使用Roxygen2,您可以將該行放在命名空間中,這也應該可以解決問題。
這應該可以防止顱骨檢查抱怨。 但是,一旦您嘗試在尚未通過以下方式加載和附加“foreach”包的計算機上運行代碼:
library(foreach)
如果“foreach”列在“導入”下而不是“取決於”描述文件中,則會收到%dopar%未找到的消息。 因此,請確保foreach列在“Depends”字段中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.