8

我正在开发一个 R 包,它需要使用snowfall包提供的并行化。snowfall似乎与其他包(如ggplot2,data.table等)的导入不同。我已将 , 和 包含snowfallrlecuyer描述snow文件、名称空间文件中,并作为函数本身的导入参数。当我尝试访问此功能时,出现以下错误:

Error in sfInit() : could not find function "setDefaultClusterOptions"

sfInit函数似乎有一个nostart/nostop参数,它说它与嵌套使用有关,sfInit但这似乎对我也没有作用。

实际代码本身使用一个sfInit(这是我得到错误的地方)、一些sfExports 和sfLibrarys 以及一个sfLapply.

snow可能的解决方案:如果我从描述文件中的导入部分移动到依赖部分,它似乎可以工作。我不知道为什么。

4

2 回答 2

5

当您在“依赖”中包含一个包时,当一个人附加您的包时,他们也会将您的包所依赖的包附加到他们的命名空间。

Depends 和 Imports 之间的这种差异和其他差异在本网站 的其他问题中得到了很好的解释。

如果您查看{snowfall}的说明,您会发现它取决于{snow}. 有可能降雪的作者知道我们不知道的东西,并且{snow}必须将其附加到全局搜索路径才能起作用。事实上,这是我上面链接的问题的最佳答案中的最高警告......

...如果你的包依赖于一个包 A,它本身“依赖”另一个包 B,你的包可能需要附加一个带有“依赖指令”的 A。

这是因为包 A 中的函数是在预期包 B 及其函数将附加到 search() 路径的情况下编写的。

所以,在你的情况下,恰巧所有{snowfall}想要的都是你想要的{snow},而你恰好提供了它。但是,看起来更正确的行为可能是您{snowfall}直接依赖的。

于 2017-12-12T03:36:00.700 回答
3

setDefaultClusterOptionssnow包中的一个函数。你也需要导入它。

于 2016-03-29T13:15:39.147 回答