一个最简单创建R包的流程。

1. 载入工具包

安装并载入devtools包和roxygen2包。devtools包提供了一些包的检查、安装和打包的基本工具。roxygen2包则使得书写R帮助文档变得轻松简单。如果习惯使用Emacs,可以结合ESS建立R包,可以将R代码和帮助文档有效组合在一起,便于管理。当然,也可以使用Rstudio

1
2
library('devtools')
library('roxygen2')

2. Rcpp和相关的包##

如果使用了Rcpp或者相关的包,比如RcppArmadillo,需要格外设置。

首先,执行:

1
use_rcpp()

其次,在DESCRIPTION中添加依赖或者需要链接的包名称,比如:

1
2
3
4
5
Imports: 
    Rcpp
LinkingTo: 
    Rcpp,
    RcppArmadillo

之后,在包的R/目录下,添加一个文件RcppChk.R(文件名称自定),并写入:

1
2
3
#' @useDynLib my-pkg-name, .registration = TRUE
#' @importFrom Rcpp sourceCpp
NULL

注意,修改my-pkg-name为自己的包名称。

然后,在包的src/目录下,添加一个文件registerDynamicSymbol.c(文件名称自定),并写入:

1
2
3
4
5
6
7
8
9
10
// RegisteringDynamic Symbols

#include <R.h>
#include <Rinternals.h>
#include <R_ext/Rdynload.h>

void R_init_markovchain(DllInfo* info) {
  R_registerRoutines(info, NULL, NULL, NULL, NULL);
  R_useDynamicSymbols(info, TRUE);
}

最后,所有cpp代码都写在src文件夹下。

3. 创建DESCRIPTION文件模板

1
load_all()

其中import栏目,在源代码中使用了哪些包,需要逐步在import项目中添加和修改。

4. 更新文档和检查包

1
2
document()
check()

5. 安装包

1
install()

6. 生成.tar.gz压缩文件

1
build()

参考网址

更新记录

2018年7月28日

Comments