R包开发总结

R包开发流程


   1.准备工作
  1.1 一些准备好的R函数,数据
  1.2 在Rstudio中创建一个R Package项目
  1.3 下载并安装devtools包,此包简化了R包开发的许多流程
  1.4 下载并安装roxygen2包,此包用来为R包添加文档




   2.开发流程
  2.1 添加函数
  2.1.1 R文件
在R包中,所有R文件都要添加到R文件夹中。注意不能在R文件夹中放入子文件夹,否则roxygen2的document文件无法写入
  2.1.2 书写函数文档
在加载了roxygen2包之后,可以在函数上方用 #' 符号为函数添加文档。
函数文档分几个部分。
1,标题,只能占用一行,不长于80个字符。
2,详细介绍,空一行之后,可以占用多行.第二段开始会放入文档的details中。每行同样不能超过80个字符。
3。examples。在文档中添加@examples或@example后添加R语句,即为文档的例子。
4,返回值,在文档中添加@return之后添加返回值解释。
5.引用其他文档段,添加@describein或@rdname域,并加上文档名,即可直接引用其他的文档段。这两个域的区别是,
添加@describein之后仍然可以添加其他的文档内容。而使用@rdname的话,在此域后面,只能用域来添加文档,
不能添加description文档。所有没有域名的文档都必须添加到@rdname的上方。
6,添加外部函数,如果当前函数使用了第三方包的函数,则有两种方法来使用此函数。第一种,
是在roxygen注释中添加@import pkg。这种方法会在R包的NAMESPACE文件中添加import域,在加载R包时,
第三方包的所有函数都会被导入。在使用函数时必须用pkg::fun的方法,以防函数名冲突。第二种方法,
是在roxygen注释中添加@importFrom pkg fun。这种方法会在NAMESPACE文件中添加importFrom域,
在使用时可以直接使用函数名,就像在.GlobalEnv中创建的函数一样。这里推荐第二种引用方法,
因为可以大幅减少函数冲突。
7. 决定是否导出函数。并不是所有定义了的函数都要让用户直接使用。对于那些你想让用户直接使用的函数,需要在
NAMESPACE文件中添加export域:export(func)。这里的处理方法是在roxygen注释中添加@export。之后,此函数会被
自动添加到NAMESPACE中。在对包进行测试时,要多export一些函数,避免重复安装包导致的繁琐工作
8.其它roxygen域:@format: 说明格式。@param param description: 参数说明


  2.2 添加数据
如果想在包中内嵌一些功能数据或者示例数据,可以先将函数导入项目全局环境,然后使用devtools::use_data(),
devtools::create(),并在DESCRIPTION中添加LazyData: true


  2.3 进行测试
在所有函数都书写完成之后,可以在项目中对包的功能进行测试。这时可以使用devtools::load_all()函数,这样
可以导入包中的所有函数,并进行调用。


  2.4 添加函数文档, DESCRIPTION文件, NAMESPACE文件
使用devtools::document()为R包生成文档。每个R文件的文档会分别以file.Rd格式存在man文件夹中。同时在R包根目录下
会生成DESCRIPTION和NAMESPACE文件。NAMESPACE文件指定了R包导出的函数和引用的第三方包或第三方函数。DESCRIPTION
文件是函数的描述文档。其中包含了描述,作者,许可证等重要信息。标题中的这三类文件不要手动生成,否则roxygen2包
无法使用document()函数对其进行修改,必须先将这些文档删除。不过有一部分信息只能手动修改:
# Author信息直接在DESCRIPTION文件中的Author@R域中修改
# 包的版本号直接在DESCRIPTION文件中的Version域进行修改


  2.5 组装二进制R包
在R包的所有内容都生成好之后,使用devtools::build()命令组装R包。这将在R包项目所在的目录下生成一个.tar.gz格式
的压缩包,这就是我们最终封装好的R包


   3 安装本地包
安装本地包的方法:
install.packages("path/package.tar.gz",
repos = NULL, type = "source")
在linux服务器上安装R包时,可以不用单独安装依赖包。
之后便可以调用library()函数并使用R包中的所有功能。

你可能感兴趣的:(R)