我正在开发一个R包,该包需要使用snowfall
包提供的并行化功能。 snowfall
似乎不像ggplot2
,data.table
等其他包那样导入。我已经在描述文件, namespace 文件中以及在函数本身中作为导入参数包括了snowfall
,rlecuyer
和snow
。当我尝试访问此功能时,出现以下错误:Error in sfInit() : could not find function "setDefaultClusterOptions"
sfInit
函数似乎有一个nostart
/nostop
参数,它说与sfInit
的嵌套用法有关,但这似乎也对我没有帮助。
实际的代码本身使用了sfInit
(这是我得到错误的地方),一些sfExport
和sfLibrary
以及sfLapply
。
可能的解决方案:
如果我将snow
从导入部分移到Desciption文件中的depends部分,则似乎可行。我不知道为什么。
最佳答案
当您在附加一个软件包时将其包含在“Depends”中时,它们还会将您的软件包所依赖的软件包附加到其命名空间中。
在此站点上的other questions中很好地解释了Depends和Imports之间的差异以及其他差异。
如果您查看{snowfall}的描述,您会发现它取决于{snow}
。降雪的作者可能知道一些我们不了解的东西,并且{snow}
必须附加到全局搜索路径才能起作用,这似乎是有道理的。实际上,这是我上面链接的问题的最高答案中的最高警告...
因此,在您的情况下,碰巧所有{snowfall}
想要的都是{snow}
,而您恰巧提供了它。但是,似乎更正确的行为可能是您直接依赖{snowfall}
。