在哪里导入依赖项 - R包开发

时间:2015-07-31 21:14:19

标签: r

我一直在网上搜索,但无法找到快速回答。我在哪里放置我的包需要的库,以便在加载我的包时也加载它们?

据我了解,imports文件中的DESCRIPTION参数只会在系统当前不存在的情况下安装这些软件包。但是在包中编写library(ggplot2)的解决方案是什么,或者我应该为每个脚本单独编写它?

当我在一个新的R会话中写devtools::load_all()并加载我的包时,我的包依次加载的库都没有被加载。

2 个答案:

答案 0 :(得分:6)

如果您还没有这样做,我强烈建议您阅读Hadley Wickham's R packages guide。对于您当前的问题,相关位为here

对于当前版本的R,大多数情况下首选的是将Imports中的必需包放入DESCRIPTION中,然后使用::函数使用完全限定的函数名称(例如plyr::llply)。对于您使用相当多的功能,您可以使用import中的importFromNAMESPACE导入它们。这与中缀函数(例如%>%的{​​{1}})特别相关。 magrittr允许在函数旁边的文档块中指定导入,从而使这更容易。

在DESCRIPTION中将某些内容放入roxygen2而不是Depends的主要原因是用户希望函数位于其名称空间中,因为他们需要直接使用它们。

CRAN和Bioconductor上的许多软件包仍然包含Imports中的所有软件包,但它为用户提供了更加拥挤的命名空间,并且更有可能在函数名称之间发生冲突。

答案 1 :(得分:1)

如果您将包名称写入说明中的Depends:字段,则在加载包时它也会加载它们。据我所知,导入执行相同但不会将加载的库放置到全局命名空间。有关详情,请参阅: Better explanation of when to use Imports/Depends

所以你不必在包中使用library()来调用其他包