我正在开发一个R包,需要使用snowfall
包提供的并行化。 snowfall
似乎导入的内容与ggplot2
,data.table
等其他软件包相同。我已包含snowfall
,{{1}在描述文件中,rlecuyer
,名称空间文件,以及函数本身的导入参数。当我尝试访问此功能时,出现以下错误:
snow
Error in sfInit() : could not find function "setDefaultClusterOptions"
函数似乎有一个sfInit
/ nostart
参数,它表示与nostop
的嵌套用法有关,但似乎没有我的诀窍。
实际代码本身使用sfInit
(我收到错误的位置),一些sfInit
和sfExport
以及sfLibrary
。
可能的解决方案:
如果我将sfLapply
从导入部分移动到Desciption文件中的depends部分,似乎可以工作。我不知道为什么。
答案 0 :(得分:4)
如果在“依赖”中包含一个软件包,当一个软件包附加您的软件包时,它们还会将软件包所依赖的软件包附加到其命名空间。
Depends和Imports之间的这个和其他差异在本网站的other questions中得到了很好的解释。
如果您查看{snowfall}的说明,您会看到它取决于{snow}
。降雪的作者知道我们不知道的事情是合理的,{snow}
必须附加到全球搜索路径才能工作。事实上,这是我在上面链接的问题的最佳答案中的首要警告......
...如果你的包依赖于一个本身“取决于”的包A 另一个包B,你的包可能需要附上一个A “取决于指令。
这是因为包A中的函数是用 期望包B及其功能将附加到 search()path。
因此,在您的情况下,恰好所有{snowfall}
想要的是{snow}
并且您碰巧提供了它。但是,对于您来说,直接依赖{snowfall}
可能会出现更正确的行为。
答案 1 :(得分:3)
setDefaultClusterOptions
是snow
包中的函数。你也需要导入它。