17.7 检查和构建包
现在,你已经创建了所有必需的目录,添加了R代码和数据集,并为它们撰写了文档。你马上就可以开始准备建立你的包了——最后一个任务是检查一切是否正常2。
2在此先泼一盆冷水,答案通常是:“等等,你还有些事情没完成。”
R有一个内置的检查工具R CMD check
,你可以从操作系统的命令行中使用它。它检查非常彻底,这也是那些你从CRAN下载的大部分软件包能实际工作的主要原因。当然,使用DOS或bash命令行就像是还工作在二十世纪一样—更好的替代方法是使用devtools
包中的check
函数,它的输出如图17-4所示:
library(devtools)
check("path/to/root/of/package")
这会输出好几个页面,并对某些东西发出警告,例如文件与相应的函数不匹配、命名并非跨平台的、范例无法正确运行以及它认为你的编码风格过时了。(好吧,最后一个是编造的,但是那里的确有很多的检查。)
图17-4:检查包时的输出
仔细阅读其输出并修正错误和警告,然后再来一次。一旦你确信你的包文件已经没有错误,那么你终于可以构建它了!除了check
以外,R还有一个内置的命令行版本的build
,但是使用devtools
包里的函数会容易得多。你可以选择构建成源代码(这样会具有跨平台的可移植性,是Linux的标准格式)或二进制(特定于你的当前操作系统):
build("path/to/root/of/package")
成功了,你现在拥有了自己的包!不过,如果其他人也可以使用你的包,那岂不是更好?要把你的包发布到CRAN上,可以使用devtools
的release
函数:
release("path/to/root/of/package")
它会问你很多问题,以确保在发布包之前,你真的万分肯定已完成了所需要的事情。
警告
当你把包上传到CRAN时,R核心成员将检查你的包是否在构建时有错误。他们的时间很宝贵,所以在把包上传到CRAN之前,请务必确保你已运行了
check
函数并且修复了所有错误和警告。