快速开发R包

R包的开发

需要安装devtools包。

https://cran.r-project.org/web/packages/devtools/devtools.pdf

 

1、devtools::create(path)

在该path路径下创建一个开发R包必须要的一些文件(包括放最后生成的help文档的man文件夹,放主要代码的R文件夹,描述文件DESCRIPTION,命名空间文件 NAMESPACE,项目文件pkgname.Rproj)

 

也可直接使用Rstudio

(1) Rstudio的左上角,file-New project-New Directory -R package

(2)写出包名,选好路径,点击创建

 

2、在R文件夹下开发代码

Tips:

1、在R包中,所有R文件都要添加到R文件夹中。注意不能在R文件夹中放入子文件夹,否则roxygen2的document文件无法写入

2、注意代码规范,参考https://nanx.me/rstyle/

1)在Rstudio直接CTRL+A全选代码后,用CTRL+SHIFT+A可自动美化代码

2)安装styler包,添加到Rstduio插件中,选择Style active file,然后CTRL+SHIFT+A可美化代码

styler

 

 

 

3)formatR包

#use the library "formatR" 
install.packages("formatR") 
library(formatR) 
# tidy_eval("file path") 
tidy_eval("C:/Users/PC_name/Desktop/myfile.R")

暂时没对比三种方法差异,要注意一下如果代码和注释在一行,可能自动标准化后会有误,需要注释单独在一行

3、主要函数的注释

https://blog.csdn.net/Xiaoyi_Zhang/article/details/79999348

在函数上方用 #' 符号为函数添加文档。

函数文档分几个部分。

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)其它:@format: 说明格式。@param param description: 参数说明

#' 函数的说明标题.
#'
#' 函数的细节说明
#' 可多行.
#' @import SC3      
#' SingleCellExperiment
#' 
#' @param data Input matrix or data frame.
#'     The rows represent items while the columns represent features.
#' @param Kmax The maximum number of clusters.
#'     The algorithm runs from \code{k = 2} to \code{k = kMax}. Default value is
#'     \code{10}.
#' @return \item{x}{multi-source data.}
#'         \item{truex}{multi-source data without noise.}
#' @export
#' @examples
#'     data(Ramskold)
#'     tmp(data = data, Kmax = 2)

tmp <- function(data, Kmax = 10){
  list(x=x,truex=truex)
}

 

4、测试

devtools::load_all() 加载包里所有函数 可以对其进行调用测试

devtools::run_examples() 运行包里面的所有examples

 

5、写DESCRIPTION

Package: 包的名称

Type: Package

Title: 包的介绍的标题

Version: 0.1.0

Author: Zhao Shan,Li Si 两个人名中间用逗号隔开

Maintainer: Zhao Shan <1234@qq.com>,Li Si <1234@qq.com> 人名后空格<邮箱> 两个人名中间用逗号

Description: 包的描述

License: GPL

Encoding: UTF-8

LazyData: true 若R包中有数据,将数据保存为RData格式,创建一个data文件夹,放在里面,将此处改为True

Imports: 需依赖的其他包 包名称之间逗号隔开

Suggests: ggplot2 建议安装的包

RoxygenNote: 7.1.1

Depends: R (>= 3.5.0)

 

6、devtools::document()

devtools::document()为R包生成文档。每个R文件的文档会分别以file.Rd格式存在man文件夹中

使用前先删掉 NAMESPACE和man文件夹,会自动生成。

 

7、devtools::build()

生成一个.tar.gz格式的压缩包,这就是我们最终封装好的R包

 

8、安装再次测试

install.packages("path/package.tar.gz", repos = NULL, type = "source")

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值