背景
最近在整理代码,如果将代码模块化,能够显著增加代码的重用性,于是开始做R-package,将做的过程记录下来。以下是简单的制作过程。
准备阶段
-
安装好 R。
-
安装RStudio。
-
安装 Rtools程序:
Windows 操作平台,请安装 rtools,去官网下载 exe 安装(https://cran.r-project.org/bin/windows/Rtools/);
Linux 操作平台,请安装对应的 R 开发包,Debian/Ubuntu 下就是运行命令 sudo apt-get install r-base-dev;
OS X 操作系统,要装好 command-line-tools,如果你没有装过的话,Terminal 运行 git 或者 xcode-select 应该会弹出安装提示,按提示安装即可。 -
安装 devtools 安装包:打开 R 环境,运行
install.packages('devtools',dependencies=T) 。
- 准备R函数:有一个编辑代码的程序,比如说 Sublime Text,notepad++,请不要用记事本编辑代码!
另外要记得把文件保存成 UTF-8 (without BOM) 编码
基于RStudio制作R包
1. 创建工程
首先,在本地创建一个工作目录,用于构建并存储R程序;然后,在RStudio菜单栏中,点击 Newproject→New directory→R package→填写R包名字及创建路径→确定创建。
可以根据需求,是否勾选 “Create a git repository”,此时在工作目录中将会生生一个".gitignore"文件,其在提交github时必须需要的文件。
我这里创建的包的名字是APT。
通过使用dir()查看一下新建文件夹下的文件,以检验是否创建成功。
如果成功,将可以看到如下文件。
> dir()
[1] "APT.Rproj" "DESCRIPTION" "man" "NAMESPACE" "R"
2. 加载辅助程序包
> library(devtools)
载入需要的程辑包:usethis
> library(roxygen2)
3. 编写DESCRIPTION文件
- 重要且容易出错,请认真填写
- 注意必填项和可选项
可通过file.edit("DESCRIPTION")
Package: MMCBtools
Type: Package
Title: What the Package Does (Title Case) #必填项
Version: 0.1.0
Author: Who wrote it #必填项
Maintainer: The package maintainer <yourself@somewhere.net> #必填项,邮箱必须用<>括起来,不然会报错!!!
Description: More about what it does (maybe more than one line) #必填项
Use four spaces when indenting paragraphs within the Description.
License: What license is it under? #必填项
Encoding: UTF-8
LazyData: true
#其它可选项
Depends:ggplot2,stringr #包之间使用逗号隔开
Suggests:ggplot2,stringr#同上
Imports:ggplot2,stringr #同上
4. 主体函数
可以将已经编写好的R程序拷贝至工作目录 R
文件夹下,或者直接在R
文件夹下创建并编写R程序,并保存即可。
5. 检查是否出现错误
执行check()
函数,检查package是否通过。
-- Building ------------------------------------------------------------------------------------------------------ APT --
Setting env vars:
* CFLAGS : -Wall -pedantic
* CXXFLAGS : -Wall -pedantic
* CXX11FLAGS: -Wall -pedantic
-------------------------------------------------------------------------------------------------------------------------
√ checking for file 'D:\worktask\20210303001-RPackages\APT/DESCRIPTION' (534ms)
- preparing 'APT':
√ checking DESCRIPTION meta-information ...
- checking for LF line-endings in source and make files and shell scripts
- checking for empty or unneeded directories
- building 'APT_0.1.0.tar.gz'
-- Checking ------------------------------------------------------------------------------------------------------ APT --
Setting env vars:
------
.....
-- R CMD check results ----------------------------------------------------------------------------------- APT 0.1.0 ----
Duration: 16.3s
> checking DESCRIPTION meta-information ... WARNING
Non-standard license specification:
What license is it under?
Standardizable: FALSE
0 errors √ | 1 warning x | 0 notes √
6. 编译压缩发布R-Packages
在RStudio中,产生源代码压缩包,之后再手动安装。
Build → More → Build source package
随后,可在工作目录下看到一个tar.gz
的压缩包。