17.7 检查和构建包

现在,你已经创建了所有必需的目录,添加了R代码和数据集,并为它们撰写了文档。你马上就可以开始准备建立你的包了——最后一个任务是检查一切是否正常2。

2在此先泼一盆冷水,答案通常是:“等等,你还有些事情没完成。”

R有一个内置的检查工具R CMD check,你可以从操作系统的命令行中使用它。它检查非常彻底,这也是那些你从CRAN下载的大部分软件包能实际工作的主要原因。当然,使用DOS或bash命令行就像是还工作在二十世纪一样—更好的替代方法是使用devtools包中的check函数,它的输出如图17-4所示:

  1. library(devtools)
  2. check("path/to/root/of/package")

这会输出好几个页面,并对某些东西发出警告,例如文件与相应的函数不匹配、命名并非跨平台的、范例无法正确运行以及它认为你的编码风格过时了。(好吧,最后一个是编造的,但是那里的确有很多的检查。)

图像说明文字

图17-4:检查包时的输出

仔细阅读其输出并修正错误和警告,然后再来一次。一旦你确信你的包文件已经没有错误,那么你终于可以构建它了!除了check以外,R还有一个内置的命令行版本的build,但是使用devtools包里的函数会容易得多。你可以选择构建成源代码(这样会具有跨平台的可移植性,是Linux的标准格式)或二进制(特定于你的当前操作系统):

  1. build("path/to/root/of/package")

成功了,你现在拥有了自己的包!不过,如果其他人也可以使用你的包,那岂不是更好?要把你的包发布到CRAN上,可以使用devtoolsrelease函数:

  1. release("path/to/root/of/package")

它会问你很多问题,以确保在发布包之前,你真的万分肯定已完成了所需要的事情。

警告

当你把包上传到CRAN时,R核心成员将检查你的包是否在构建时有错误。他们的时间很宝贵,所以在把包上传到CRAN之前,请务必确保你已运行了check函数并且修复了所有错误和警告。