我正在开发一个 R 包,它需要使用 snowfall
提供的并行化。包裹。 snowfall
似乎没有像 ggplot2
这样的其他包一样导入, data.table
等等。我已经包括了 snowfall
, rlecuyer
,和snow
在描述文件、命名空间文件中以及作为函数本身的导入参数。当我尝试访问此函数时,出现以下错误:
Error in sfInit() : could not find function "setDefaultClusterOptions"
sfInit
函数似乎有一个nostart
/nostop
它所说的参数与 sfInit
的嵌套使用有关但这似乎对我来说也不起作用。
实际代码本身使用 sfInit
(这就是我收到错误的地方),一些 sfExport
和 sfLibrary
s,以及 sfLapply
.
可能的解决方案:
如果我移动 snow
似乎有效从说明文件中的导入部分到依赖部分。但我不知道为什么。
最佳答案
当您在“Depends”中包含一个包时,当有人附加您的包时,他们也会将您的包所依赖的包附加到其命名空间。
依赖和导入之间的这一点和其他差异在other questions中有很好的解释。在这个网站上。
如果你看{snowfall}的描述,您会看到它取决于 {snow}
。降雪的作者可能知道一些我们不知道的事情,并且 {snow}
必须附加到全局搜索路径才能工作。事实上,这是我上面链接的问题的最佳答案中最重要的警告......
... if your package relies on a package A which itself "Depends" on another package B, your package will likely need to attach A with a "Depends directive.
This is because the functions in package A were written with the expectation that package B and its functions would be attached to the search() path.
因此,就您而言,碰巧所有 {snowfall}
想要的是 {snow}
而您恰好提供了它。但是,看起来更正确的行为可能是直接依赖 {snowfall}
。
关于r - 将降雪导入自定义 R 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36284643/