仅在包说明中导入 foreach 时如何使用 %dopar%
how to use %dopar% when only import foreach in DESCRIPTION of a package
当只在包的描述中导入(不依赖)foreach 时,如何避免在包的函数中使用 "could not find function "%dopar%""?当我在函数中使用 foreach::foreach 时,有没有像 foreach::%dopar% 这样的方法?谢谢。
代码如下:
函数中
foreach::foreach(1:9) %dopar% {
...}
在描述中
Imports:
Matrix,
parallel,
foreach,
doParallel
您需要使用反引号:foreach::`%dopar%`
(或者引号 foreach::"%dopar%"
也可以)。
@Kevin Zen,
我遇到了同样的问题,但我想我只是通过使用命名空间文件中的 "importFrom" 字段解决了这个问题。我使用 Roxygen2 来记录,所以我简单地包含了标签:
#' @importFrom foreach %dopar%
调用函数 foreach。它在命名空间文件中创建了一个字段,如下所示:
importFrom(foreach,"%dopar%")
因此,如果您不使用 Roxygen2,则可以将该行放在您的命名空间中,这样也可以解决问题。
这应该可以防止 cran check 抱怨。但是,一旦您尝试 运行 尚未通过以下方式加载和附加 "foreach" 程序包的计算机上的代码:
library(foreach)
如果 "foreach" 在描述文件中的 "Imports" 下而不是 "Depends" 下列出,您将收到一条消息,指出未找到 %dopar%。因此,请确保 foreach 列在 "Depends" 字段中。
以下对我有用。定义一个局部%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 时,如何避免在包的函数中使用 "could not find function "%dopar%""?当我在函数中使用 foreach::foreach 时,有没有像 foreach::%dopar% 这样的方法?谢谢。
代码如下:
函数中
foreach::foreach(1:9) %dopar% {
...}
在描述中
Imports:
Matrix,
parallel,
foreach,
doParallel
您需要使用反引号:foreach::`%dopar%`
(或者引号 foreach::"%dopar%"
也可以)。
@Kevin Zen,
我遇到了同样的问题,但我想我只是通过使用命名空间文件中的 "importFrom" 字段解决了这个问题。我使用 Roxygen2 来记录,所以我简单地包含了标签:
#' @importFrom foreach %dopar%
调用函数 foreach。它在命名空间文件中创建了一个字段,如下所示:
importFrom(foreach,"%dopar%")
因此,如果您不使用 Roxygen2,则可以将该行放在您的命名空间中,这样也可以解决问题。
这应该可以防止 cran check 抱怨。但是,一旦您尝试 运行 尚未通过以下方式加载和附加 "foreach" 程序包的计算机上的代码:
library(foreach)
如果 "foreach" 在描述文件中的 "Imports" 下而不是 "Depends" 下列出,您将收到一条消息,指出未找到 %dopar%。因此,请确保 foreach 列在 "Depends" 字段中。
以下对我有用。定义一个局部%do%
或%dopar%
如下
`%dopar%` <- foreach::`%dopar%`
`%do%` <- foreach::`%do%`
那你应该可以运行
foreach::foreach(i = 1:9, .combine = "+") %dopar% {i}
foreach::foreach(i = 1:9, .combine = "+") %do% {i}