簡體   English   中英

如果僅在包的描述中導入foreach,如何使用%dopar%

[英]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.

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