繁体   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