R包开发流程

本文详细介绍了R包从创建到发布的全过程,包括使用devtools和usethis包进行包初始化、编写函数、添加文档、设置许可证、安装、测试、检查、创建README以及数据和依赖项管理等关键步骤。此外,还涵盖了如何进行单元测试和创建包的说明文件。
摘要由CSDN通过智能技术生成

R包开发

创建R包基本流程:

开发工具:devtools 运行调试 + usethis 创建修改

基本流程:

  • create_package 创建一个R包
  • use_r()写函数,插入roxygen注释和tag,使用document()生成文档
  • load_all()载入包
  • use_***_license 添加license
  • install安装包
  • use_testthat()use_test()生成测试文件;test()进行测试
  • check对整个包进行检查
  • use_readme_rmd()build_readme()生成readme文件

开发工具:

install.packages("devtools")
library(devtools)
library(usethis)

初始化package项目: create_package()

usethis::create_package("~/toypackages")

创建函数:usethis::use_r() -> R/*.R -> 添加R函数脚本(合并因子)

usethis::use_r("fbind")
fbind <- function(a, b) {
  factor(c(as.character(a), as.character(b)))
}

交互载入验证:devtools::load_all() 快捷键:Ctrl + Shift + L -> man

devtools::load_all()
a <- factor(c("character", "hits", "your", "eyeballs"))
b <- factor(c("but", "integer", "where it", "counts"))
fbind(a,b)

自动检查包:devtools::check() 快捷键:Ctrl + Shift + E

devtools::check()

添加license: 修改DESCRIPTION文件 -> metadata (作者/包名称 /简介等)

use_mit_license() -> MIT license

usethis::use_mit_license("xiongfeng chen")

添加函数帮助文档:

man/*.Rd <- roxygen2包生成

fbind.R -> Code>Insert roxygen skeleton

#' @examples
#' fbind(iris$Species[c(1, 51, 101)], PlantGrowth$group[c(1, 11, 21)])
fbind <- function(a, b) {
  factor(c(as.character(a), as.character(b)))
}

生成man/fbind.Rd文件:document() 快捷键:Ctrl + Shift + D

document()
?fbind

生成包:install() -> toypackages_0.0.0.9000.tar.gz

install()

测试包:

library(toypackage)
a <- factor(c("character", "hits", "your", "eyeballs"))
b <- factor(c("but", "integer", "where it", "counts"))
fbind(a, b)

规范测试:

use_testthat() -> DESCRIPTION文件加入suggests:testthat:

​ -> 创建tests/testthat文件夹,并生成testthat.R`文件

library(devtools)
use_testthat()

创建测试文件:use_test() -> 生成tests/testthat/test-fbind.R文件

use_test("fbind")

修改测试内容: expect_*fun()

test_that("fbind() binds factor (or character)", {
  x <- c("a", "b")
  x_fact <- factor(x)
  y <- c("c", "d")
  z <- factor(c("a", "b", "c", "d"))

  expect_identical(fbind(x, y), z)
  expect_identical(fbind(x_fact, y), z)
})

进行测试:test() 快捷键:Ctrl + Shift + T

test()

调用其他包函数: use_package()

​ -> DESCRIPTION文件添加 Imports::forcats

use_package("forcats")

R包readme说明文件:use_readme_rmd() + build_readme()

创建数据:usthis::use_data() - > ‘data/x.rda’ / ‘data/mtcars.rda’

x <- sample(1000)
usethis::use_data(x, mtcars,`internal = TRUE`)

保留原始数据:usethis::use_data_raw() -> data-rawDATASET.R

usethis::use_data_raw()

数据文档说明:R/data.R

#' Prices of 50,000 round cut diamonds.
#'
#' A dataset containing the prices and other attributes of almost 54,000
#' diamonds.
#'
#' @format A data frame with 53940 rows and 10 variables:
#' \describe{
#'   \item{price}{price, in US dollars}
#'   \item{carat}{weight of the diamond, in carats}
#'   ...
#' }
#' @source \url{http://www.diamondse.info/}
"diamonds"

包文档说明: <-package?dplyr调出

创建包:usethis::create_package(path)

​ 工作路径最好是源码包的top-level

参考:

R packages 2nd edition

cheatsheet

image-20200916155008545

R packages 2nd edition

cheatsheet

[外链图片转存中…(img-W1h8mLRE-1625758225017)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值