Zhi*_*Jia 7 foreach r package domc doparallel
如果在包的描述中仅导入(不依赖)foreach,如何在包的功能中避免"找不到函数"%dopar%""?有没有像foreach ::%dopar%的方式,因为我在函数中使用foreach :: foreach?谢谢.
代码如:
在功能上
foreach::foreach(1:9) %dopar% {
...}
Run Code Online (Sandbox Code Playgroud)
在描述中
Imports:
Matrix,
parallel,
foreach,
doParallel
Run Code Online (Sandbox Code Playgroud)
以下对我有用.定义本地%do%或%dopar%如下
`%dopar%` <- foreach::`%dopar%`
`%do%` <- foreach::`%do%`
Run Code Online (Sandbox Code Playgroud)
然后你应该能够跑
foreach::foreach(i = 1:9, .combine = "+") %dopar% {i}
foreach::foreach(i = 1:9, .combine = "+") %do% {i}
Run Code Online (Sandbox Code Playgroud)
@Kevin Zen,
我遇到了同样的问题,但我想我只是通过使用命名空间文件中的"importFrom"字段来解决它.我使用Roxygen2来记录,所以我只是包含了标签:
#' @importFrom foreach %dopar%
Run Code Online (Sandbox Code Playgroud)
调用foreach函数.它在命名空间文件中创建了一个字段,如下所示:
importFrom(foreach,"%dopar%")
Run Code Online (Sandbox Code Playgroud)
因此,如果您不使用Roxygen2,您可以将该行放在命名空间中,这也应该可以解决问题.
这应该可以防止颅骨检查抱怨.但是,一旦您尝试在尚未通过以下方式加载和附加"foreach"包的计算机上运行代码:
library(foreach)
Run Code Online (Sandbox Code Playgroud)
如果"foreach"列在"导入"下而不是"取决于"描述文件中,则会收到%dopar%未找到的消息.因此,请确保foreach列在"Depends"字段中.
| 归档时间: |
|
| 查看次数: |
2013 次 |
| 最近记录: |