虽然有很多关于类似主题的帖子,但它们都没有帮助我理解如何将描述文件设置为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也被附加,但没有其他包。我的包裹是否仍适用于其他用户?如果他们没有安装所有需要的软件包怎么办?
答案 0 :(得分:4)
从?install.packages
开始,默认行为是Depends:和Imports:如果尚未安装,则安装包。查看sessionInfo()
,您将看到您的Imports:已加载(驻留在内存中)但未附加(在磁盘上可用)。如果您的importFrom语句涵盖了包代码中使用的符号,那么您的代码将适用于其他符号(如果缺少导入,则会向您发出有关未定义的全局变量的警告)。