首先,安装Rtools: http://cran.r-project.org/bin/windows/Rtools/,想必你已经知道了这并不是一个R的包;
其次,最好有一个Rstudio;
再次,愉快的安装devtools包吧:
install.packages("devtools",dependencies=T)
好了,准备工作就绪,打开一个新的脚本,即可以开始写包之旅。
检测环境
library(devtools)
has_devel()#诊断环境
利用has_devel函数检测当前的环境是否有问题,比如gcc,可能因为我也忘记了自己之前之前配置过什么,反正总之就是没问题哈哈,是的只要返回值是TRUE就没问题。
早就说了要开始现在才开始
create("E:/Jigeshenqi")#创建包的文件夹,文件夹名就是包的名字,比如我的就是及格神器,囧……
setwd("E:/Jigeshenqi")#工作空间转移,这样比较方便
值得一提的是,除了以上命令外,也可以通过Rstudio中的file-New Project-New Directory-R Package来新建R包的项目。
来看看这个项目的结构:
1.一个R的文件夹,用来存放.r脚本,比如你的常用function,放在这里即可;
2.一个基础的无后缀的DESCRIPTION文本文件,可以用任意文本编辑器打开,是对于你将创建的R包的基础介绍;
3.NAMESPACE文件,可以先不用管它;
总之,一个package的框架基本就有了,剩下的就是往里面填东西。
添加.R文件
首先往包文件目录下的R文件夹内添加自己编写的R脚本,如果此时你没有合适的脚本那么随便写个function也是可以的:比如
及格神器,将考试得到的的数开方再乘以10
newscore <- function(x){
y <- sqrt(x)*10
return(y)
}
然后打开.R文件,将光标置于函数名称,按住ctrl+shift+alt+r,函数就自动添加了几行信息。
这时我们需要将信息填写完整。
比如我填的:
#' Caculate the newscore
#'
#' @param x old score
#'
#' @return new score
#' @export
#'
#' @examples newscore(49)
然后保存文件。
编辑DESCRIPTION
file.edit("DESCRIPTION")
如下:
Package: Jigeshenqi
Title: What the Package Does (One Line, Title Case)
Version: 0.0.0.9000
Authors@R:
person(given = "lx",
family = "Wang",
role = c("aut", "cre"),
email = "first.last@example.com",
comment = c(ORCID = "YOUR-ORCID-ID"))
Description: What the package does (one paragraph).
License: What license it uses
Encoding: UTF-8
LazyData: true
RoxygenNote: 7.0.2
Authors@R的格式必须要用person函数来写,其他的因为无上传打算,随意就好。
关于以上,如果在.r文件中引用了某个包,把包名写入imports中,在后期加载时会自动加载这个包。我这没有,就没填了。
准备打包
load_all()
每一次运行load_all(),都会载入Jigeshenqi/R内最新的所有.r文件内容。
document()
接着用document()将Jigeshenqi/R内的所有.r文件生成为jigeshenqi/man文件夹内的.Rd文件。
build()#打包
打包成一个压缩文件,生成jigeshenqi_0.0.0.tar.gz,用于安装,这个文件会生成在jigeshenqi文件夹的上一级栏目。
使用
install(".")
安装,大功告成。
重启Rstudio,调用一下吧0
> library(Jigeshenqi)
> newscore(36)
[1] 60
36分经过换算成了60分。。。棒
上传到github,安装测试
> devtools::install_github("lxwang326/R_Code/Jigeshenqi")
Downloading GitHub repo lxwang326/R_Code@HEAD
√ checking for file 'C:\Users\Cuixia\AppData\Local\Temp\RtmpkTOkDS\remotes1710ce13bc\lxwang326-R_Code-d37d979\Jigeshenqi/DESCRIPTION' ...
- preparing 'Jigeshenqi':
√ checking DESCRIPTION meta-information ...
- checking for LF line-endings in source and make files and shell scripts
- checking for empty or unneeded directories
- building 'Jigeshenqi_0.0.0.9000.tar.gz'
Installing package into ‘C:/Users/Cuixia/Documents/R/win-library/4.0’
(as ‘lib’ is unspecified)
* installing *source* package 'Jigeshenqi' ...
** using staged installation
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
converting help for package 'Jigeshenqi'
finding HTML links ... 好了
newscore html
** building package indices
** testing if installed package can be loaded from temporary location
*** arch - i386
*** arch - x64
** testing if installed package can be loaded from final location
*** arch - i386
*** arch - x64
** testing if installed package keeps a record of temporary installation path
* DONE (Jigeshenqi)
加载包 测试
> library(Jigeshenqi)
> newscore(36)
[1] 60
成功!!!
后面可以将其上传到github或者修改后发布到CRAN等。
参考
https://www.cnblogs.com/big-face/p/5116954.html?utm_source=tuicool&utm_medium=referral
大鹏 零基础学习R语言
网友评论