我一直在网上搜索,但无法找到快速回答。我在哪里放置我的包需要的库,以便在加载我的包时也加载它们?
据我了解,imports
文件中的DESCRIPTION
参数只会在系统当前不存在的情况下安装这些软件包。但是在包中编写library(ggplot2)
的解决方案是什么,或者我应该为每个脚本单独编写它?
当我在一个新的R会话中写devtools::load_all()
并加载我的包时,我的包依次加载的库都没有被加载。
答案 0 :(得分:6)
如果您还没有这样做,我强烈建议您阅读Hadley Wickham's R packages guide。对于您当前的问题,相关位为here。
对于当前版本的R,大多数情况下首选的是将Imports
中的必需包放入DESCRIPTION
中,然后使用::
函数使用完全限定的函数名称(例如plyr::llply
)。对于您使用相当多的功能,您可以使用import
中的importFrom
和NAMESPACE
导入它们。这与中缀函数(例如%>%
的{{1}})特别相关。 magrittr
允许在函数旁边的文档块中指定导入,从而使这更容易。
在DESCRIPTION中将某些内容放入roxygen2
而不是Depends
的主要原因是用户希望函数位于其名称空间中,因为他们需要直接使用它们。
CRAN和Bioconductor上的许多软件包仍然包含Imports
中的所有软件包,但它为用户提供了更加拥挤的命名空间,并且更有可能在函数名称之间发生冲突。
答案 1 :(得分:1)
如果您将包名称写入说明中的Depends:字段,则在加载包时它也会加载它们。据我所知,导入执行相同但不会将加载的库放置到全局命名空间。有关详情,请参阅: Better explanation of when to use Imports/Depends
所以你不必在包中使用library()
来调用其他包