使用.onLoad加载依赖包

时间:2011-03-14 04:18:10

标签: r ggplot2 package

我的包需要ggplot2包,但是我无法修复运行R CMD检查时得到的以下注释。

no visible global function definition for qplot
'library' or 'require' call not declared from: ggplot2

我还有一个.onLoad函数,

.onLoad <- function(libname, pkgname){
.libPaths("~/RLibrary")
require(ggplot2)
}

有关如何解决错误的任何建议?我应该在哪里放置onLoad函数?

谢谢你 圣

1 个答案:

答案 0 :(得分:8)

我认为你不应该这样做。最好是让你的包依赖于ggplot2或导入ggplot2的命名空间。通过在描述中添加Depends: ggplot2,在NAMESPACE中添加Imports: ggplot2(或者更准确地使用import(ggplot2),在添加importfrom(ggplot2,"somefunction")和第二个文件中执行此操作。

或者您可以在DESCRIPTION中设置Suggests: ggplot2并在使用它的任何函数中放置require("ggplot2"),但我不喜欢这个。

另见:

http://cran.r-project.org/doc/manuals/R-exts.html#The-DESCRIPTION-file

编辑:更清楚一点。使用Depends,每次加载包时都会加载包,并且其功能全部可供用户使用。

使用Imports,您可以使用软件包的功能,但是在未加载软件包时不会加载软件包(用户无法使用这些软件)。

使用Suggests加载包时未加载包,但无法使用其功能。您需要在某处声明require才能使用它们。基本上这可以用来表明你在某个地方使用这个包(在一个例子中)。

这完全取决于您希望用户如何使用所依赖的软件包以及它对您的软件包的重要性。例如,如果您的包是ggplot2 Depends的前端最好,如果它进行了一些分析并且具有绘图函数Imports是最好的。