手把手教你制作R包(一)
一、准备工作
- 安装开发所需的R包:devtools
install.packages("devtools")
library(devtools)install.packages("roxygen2")
library(roxygen2)
二、创建R包
2.1 初始化R包
- 基于
create_package()
函数初始化一个名为plotAUC
的R包;基于roxygenize()
函数生成帮助文档(一般产生一个空的man目录
)。 - 执行完成后,将在当前目录下创建
plotAUC
文件夹,并在新生成的文件中,自动创建多个必须的文件和R目录(文件夹),如DESCRIPTION
,NAMESPACE
… 及 项目工程文件plotAUC.Rproj
等各种文件(可以自行查看) - 执行结束后,会自动开启一个新的IDE窗口。
- 目录结构如下:
> usethis::create_package("./plotAUC")
√ Creating './plotAUC/'
√ Setting active project to 'D:/worktask/RandomForest/plotAUC'
√ Creating 'R/'
√ Writing 'DESCRIPTION'
Package: plotAUC
Title: What the Package Does (One Line, Title Case)
Version: 0.0.0.9000
Authors@R (parsed):* First Last <first.last@example.com> [aut, cre] (YOUR-ORCID-ID)
Description: What the package does (one paragraph).
License: `use_mit_license()`, `use_gpl3_license()` or friends topick a license
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.1.2
√ Writing 'NAMESPACE'
√ Writing 'plotAUC.Rproj'
√ Adding '^plotAUC\\.Rproj$' to '.Rbuildignore'
√ Adding '.Rproj.user' to '.gitignore'
√ Adding '^\\.Rproj\\.user$' to '.Rbuildignore'
√ Opening 'D:/worktask/RandomForest/plotAUC/' in new RStudio session
√ Setting active project to '<no active project>'> roxygenize("D:/worktask/RandomForest/plotAUC")
2.2 修改 DESCRIPTION 文件
Package: plotAUC
Title: What the Package Does (One Line, Title Case)
Version: 0.0.0.9000
Authors@R: person(given="First", family="Last",email="first.last@example.com", role=c("aut", "cre"),comment=c(ORCID = "YOUR-ORCID-ID"))
Description: What the package does (one paragraph).
License: `use_mit_license()`, `use_gpl3_license()` or friends to pick alicense
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.1.2
2.3 创建第一个函数
在新开启的IDE窗口中,
- 执行
usethis::use_r()
函数,创建R函数; - 或者,将已经完成的
R文件(如test.R)
直接放到R
目录下
> usethis::use_r("plotAUC")
√ Setting active project to 'D:/worktask/RandomForest/plotAUC'
* Modify 'R/plotAUC.R'
* Call `use_test()` to create a matching test file
- 执行
usethis::use_r()
函数之后,在R目录
下自动创建一个R函数,并在R窗口中打开 - 接下来,为这个函数添加程序。
在编写程序过程中,如果依赖其他的R-packages,可以使用use_package("Package-names")
函数,将相应的包加载到当前包环境中。
此时,也会在元数据文件中增加一个条目:Imports: ggplot2, ggprism
> use_package("ggplot2")
√ Adding 'ggplot2' to Imports field in DESCRIPTION
* Refer to functions with `ggplot2::fun()`
> use_package("ggprism")
√ Adding 'ggprism' to Imports field in DESCRIPTION
* Refer to functions with `ggprism::fun()`
2.4 测试函数
使用devtools::load_all()
函数加载创建的函数(执行了building-installing-attaching
)
> devtools::load_all()
i Loading plotAUC
> plot_cum_auc(imp, auc, rawdata)
2.5 包检查
- 主要是核验包的其他文件或附件是否合法
> devtools::load_all()
> usethis::use_mit_license()
> devtools::check() # 不需要任何参数
i Updating plotAUC documentation
i Loading plotAUC
-- Building ------------------------------------------------------------------------------ plotAUC --
Setting env vars:
* CFLAGS : -Wall -pedantic
* CXXFLAGS : -Wall -pedantic
* CXX11FLAGS: -Wall -pedantic
* CXX14FLAGS: -Wall -pedantic
* CXX17FLAGS: -Wall -pedantic
* CXX20FLAGS: -Wall -pedantic
----------------------------------------------------------------------------------------
........0 errors √ | 1 warning x | 2 notes x
- 备注:只要没有error,基本不影响整个包的创建;自己可以基于自己的实际情况自行查找修改warning和notes
2.6 为函数添加说明/帮助文档
我们可以为函数加上一些帮助文档,文档放在man文件夹
里面;帮助文档的后缀是.Rd
,一种Rmarkdown
文件。
有两种方法可以添加帮助文档:
- 直接在每一个函数上方以标准格式形式写注释
- 打开code文件(如plotAUC.R),点击
Code>Insert roxygen skeleton
(注意,这个时候光标要在函数内部)。随后,自动在函数上面插入模板,可在此基础上进行修改。
#' Title
#'
#' @param imp
#' @param auc
#' @param rawdata
#' @param sec_axis_percent
#'
#' @return
#' @export
#'
#' @examples
最后,使用roxygen2::roxygenize()
和devtools::document()
生成.Rd
帮助文档(存在于man目录下
)
> roxygenize("D:/worktask/RandomForest/plotAUC")
i Loading plotAUC
> devtools::document()
i Updating plotAUC documentation
i Loading plotAUC
Writing NAMESPACE
Writing plot_cum_auc.Rd
> ?plot_cum_auc
i Rendering development documentation for "plot_cum_auc"
2.7 添加内置数据集
2.7.1. 手动添加内置数据
- 在包目录下,添加
data
文件夹 - 将
*.RData
文件迁移至data
文件夹下
2.7.2. 自动添加内置数据
- 先将数据读入包环境中,然后执行
devtools::use_data(dat1, dat2, dat3,...)
。 - 自动在包目录中添加
data
目录,并保存数据为*.rda
文件(RData数据类型)
> usethis::use_data(imp, auc, rawdata, group, dat1)
√ Adding 'R' to Depends field in DESCRIPTION
√ Creating 'data/'
√ Setting LazyData to 'true' in 'DESCRIPTION'
√ Saving 'imp', 'auc', 'rawdata', 'group', 'dat1' to 'data/imp.rda', 'data/auc.rda', 'data/rawdata.rda', 'data/group.rda', 'data/dat1.rda'
* Document your data (see 'https://r-pkgs.org/data.html')
备注:一般在加载R包后,使用data("auc")
加载数据文件。
2.7.3. 内置数据集注释
- 撰写
data.R
对这些数据进行docment的时候,是对这些数据的名称进行说明,并存放到R/
目录下。比如,在ggplot2包中对diamonds数据的说明存放在R/data.R
中:
#' @docType data
#' @name auc
#'
#' @title Test data
#' @description A dataset containing the prices and other attributes of almost 54,000
#' diamonds.
#' @details Success!!
#'
#' @format A data frame with 53940 rows and 10 variables:
#' \describe{#' \item{AUCs}{The cumulative AUC value }
#' \item{Lable}{Is it selected?}
#' \item{NumberOfFeatures}{The rank of features}
#' ...
#' }
#' @source \url{NULL}
NULL
备注:\describe{...}
中可以仅填写...
省略号,一匹配所有的信息;@name
必须与数据文件同名
- 创建
document
文档
> document()
i Updating plotAUC documentation
i Loading plotAUC
Writing NAMESPACE
Writing NAMESPACE
Writing auc.Rd
Writing imp.Rd
Writing group.Rd
Writing dat1.Rd
Writing rawdata.Rd
2.8 包检查和创建readme文件
最后,我们可以use_readme_rmd()
和build_readme()
生成readme
文件,对R包进行说明,包括packages的描述;安装;示例。
> devtools::check()
> use_readme_rmd()
√ Writing 'README.Rmd'
√ Adding '^README\\.Rmd$' to '.Rbuildignore'
* Modify 'README.Rmd'
* Update 'README.Rmd' to include installation instructions.
> build_readme()
i Installing plotAUC in temporary library
i Building D:/worktask/RandomForest/plotAUC/README.Rmd> build() # 创建R包:*.tar.gz# 需要重新启动R编辑器
> devtools::install() # 安装R包
3. 总结
基本的流程是:
create_package 创建一个R包
use_r()写函数,插入roxygen注释和tag,使用document()生成文档
# usr_data() 添加内置数据
load_all()载入包
use_***_license 添加license
# install安装包
# use_testthat() 和use_test()生成测试文件;test()进行测试
check对整个包进行检查
use_readme_rmd()和build_readme()生成readme文件
build() 创建R包
手把手教你制作R包(一)相关推荐
- 怎么把视频转成gif格式?手把手教你制作表情包
怎么把视频转成gif格式?GIF格式大家都不陌生,它与视频相比起来,具有体积小.易发送传输等优点,我们平时也经常能看到一些精彩视频片段制作而成的gif表情包,其实把视频转gif并不难,下面就来给大家分 ...
- Android反编译:手把手教你制作高德地图车机共存版
Android反编译:手把手教你制作高德地图车机共存版 前言 前期准备 反编译流程 反编译获取有效信息 修改关键信息 修改包名 修改其它配置 生成APK 重新打包成apk 重新签名 绕过校验机制 定位 ...
- 手把手教你捕获数据包
原文链接:http://blog.csdn.net/piggyxp/article/details/24444 前 言 经常看到论坛有人问起关于数据包的截获.分析等问题,幸好本人也对此略有所知,也 ...
- 手把手教你制作AppPreview视频并上传到appStore进行审核
手把手教你制作AppPreview视频并上传到appStore进行审核 注意,你需要使用iMovie才能够制作AppPreview视频文件,用QuickTime录制的无效! 最终效果 1. 新建一个事 ...
- 最新免费自建APP平台哪个好?手把手教你制作APP
大型二手交易网站咸鱼近日发布<90后分享经济消费报告>,报告显示:16-27岁的年轻人用户占比已达55%,90后已成为分享经济的绝对主力:基于地理位置或兴趣同好形成的社区"鱼塘& ...
- 手把手教你制作手机底部导航栏,领导看完都说好
手把手教你制作手机底部导航栏,领导看完都说好
- 天线巴伦制作和原理_【火腿DIY】巴伦知识图集|手把手教您制作1:1短波巴伦
洛阳市无线电运动协会 CQ<现代通讯>杂志官网 黑暗森林的博客 什么是巴伦?短波用巴伦的作用是什么? 巴伦(英文:Balun)是平衡Balanced和不平衡Unbalanced转换器的英文 ...
- PWA入门:手把手教你制作一个PWA应用
摘要: PWA图文教程 原文:PWA入门:手把手教你制作一个PWA应用 作者:MudOnTire Fundebug经授权转载,版权归原作者所有. 简介 Web前端的同学是否想过学习app开发,以弥补自 ...
- 怎么将自己的头像p到特定的背景图_【后期修图】photoshop手把手教你制作属于自己的酷炫的微信头像...
原标题:[后期修图]photoshop手把手教你制作属于自己的酷炫的微信头像 效果图先放上 1.新建一个白色的背景,这里是1080*720的.然后在图层面板下面单击创建新的调整图层/渐变,设 置 好渐 ...
- 手把手教你制作微信十周年专属勋章头像
本文图文手把手教你制作微信十周年专属勋章头像. 首先扫码打开"微信十年 时空隧道"小程序,微信浏览的长按可识别小程序码. 打开小程序后先不用操作,也不用担心以为中毒了乱刷屏
最新文章
- 基于vue和elementUI封装框选表格组件
- U-net进行图像分割
- ASP.NET分页存储过程自定义用户控件
- Core Data系列二——基础概念
- 四针角oled屏连接arduino_使用Arduino开发板连接OLED显示屏制作一款智能手表
- 用offset调用文章
- python自动关闭弹窗_python – 每隔x分钟创建一个tkinter窗口,然后在y秒后自动关闭它...
- 解决:'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- 剖析SQL Server2005 SQLCLR代码安全性
- 通信(1)----Http协议的方法讲解
- 汇编学习--7.13--标志寄存器
- 【转】nodejs 爬取前端面经并生成词云
- java控制结构_Java 控制结构与方法
- shiro设置session超时时间
- 分析137份大数据简历-统计技术名词词频
- 微信公众号服务号怎么添加模板消息给所有粉丝群发
- 小技巧|Cadence安装之后,原理图DSN文件的默认图标不对如何进行修改
- pandas 行列转换
- PHP + QQ邮箱发送邮箱验证码
- VMware下载安装、虚拟机创建、CentOS8镜像下载配置的具体步骤
热门文章
- CNDS的发布文章方法
- 计算机网络之网络安全基础
- EDA技术实用教程VHDL篇--Quartus II 13.1实用教程--工程建立
- linux 生成excel格式的文件怎么打开乱码,导出的文件乱码怎么办(各位,汉字在excel表格中显示乱码,怎么办)...
- excel打开csv乱码解决------------为什么pycharm里面csv不乱码,excel里面却乱码了
- WAP中推送技术的分析与设计
- 数据库入门基本知识点
- cnode系列之登陆注册功能
- hosts 下载 android
- 零跑科技实现“领跑”背后:频现“质量门”,噱头大于实际?