R包:描述,选择性导入和命名空间

时间:2013-11-28 13:37:45

标签: r package

虽然有很多关于类似主题的帖子,但它们都没有帮助我理解如何将描述文件设置为R包。

我的问题是:

1。)我的描述文件现在是否正确?我是否正确使用“依赖”和“导入”? (也许是重复的问题......)

2.。)需要的包(依赖项?)是否在需要时自动与我的包一起安装,或者当我的某个包函数需要引用导入包的功能时“加载”? (在这个问题上没有找到任何东西......)

我尝试向CRAN提交一个包并得到以下反馈:

  
      
  • 检查包依赖关系...注意   取决于:包括非默认包:   '大众''汽车''外国''ggplot2''lmtest''plyr''reshape2''尺度'   在搜索路径中添加这么多的包过多,最好选择性导入。
  •   

我最初在DESCRIPTION文件的 depends 部分列出了上述所有包。在NAMESPACE文件中,我对上面列出的所有包使用了import(pkgName)

之后,我使用NAMESPACE文件中的importFrom(pkgName, function)更新了我的文件,并将大部分软件包移到了DESCRIPTION文件的 imports 部分。使用当前R-devel版本的包检查不再提供此注释。这是我的描述文件的摘录:

License: GPL-3
Depends:
    ggplot2
Imports:
    MASS,
    car,
    foreign,
    lmtest,
    plyr,
    reshape2,
    scales
Collate:
    'sjImportSPSS.R'

和NAMESPACE文件:

import(ggplot2)
importFrom(MASS,lda)
importFrom(MASS,loglm)
importFrom(car,crPlots)
importFrom(car,durbinWatsonTest)
importFrom(car,influencePlot)
importFrom(car,leveragePlots)
importFrom(car,ncvTest)
importFrom(car,outlierTest)
importFrom(car,spreadLevelPlot)
importFrom(car,vif)
importFrom(foreign,read.spss)
importFrom(lmtest,bptest)
importFrom(plyr,adply)
importFrom(plyr,ddply)
importFrom(reshape2,melt)
importFrom(scales,brewer_pal)
importFrom(scales,percent)

我不确定这种方法是否解决了上面的检查说明中给出的问题。此外,当我用library(sjPlot)加载我的包时,ggplot2也被附加,但没有其他包。我的包裹是否仍适用于其他用户?如果他们没有安装所有需要的软件包怎么办?

1 个答案:

答案 0 :(得分:4)

?install.packages开始,默认行为是Depends:和Imports:如果尚未安装,则安装包。查看sessionInfo(),您将看到您的Imports:已加载(驻留在内存中)但未附加(在磁盘上可用)。如果您的importFrom语句涵盖了包代码中使用的符号,那么您的代码将适用于其他符号(如果缺少导入,则会向您发出有关未定义的全局变量的警告)。