发布包到 CRAN
概述
CRAN(Comprehensive R Archive Network)是R语言的官方包存储库,开发者可以将自己编写的R包发布到CRAN上,供全球R用户下载和使用。发布包到CRAN不仅可以让更多人受益于你的工作,还能提升你的编程技能和知名度。
准备工作
在发布包到CRAN之前,你需要确保你的R包已经具备了以下条件:
- 包结构完整:包目录结构符合R包的标准格式。
- 文档齐全:使用
roxygen2包生成了详细的文档。 - 测试通过:使用
testthat包编写了单元测试,并确保所有测试通过。 - 符合CRAN政策:包的功能和代码必须符合CRAN的政策和指南。
创建R包
如果你还没有创建R包,可以按照以下步骤创建一个简单的R包:
# 安装devtools包(如果尚未安装)
install.packages("devtools")
# 加载devtools包
library(devtools)
# 创建一个新的R包
create("mypackage")
编写代码和文档
在R/目录下编写你的R函数,并使用roxygen2生成文档。例如:
#' 计算两个数的和
#'
#' @param x 第一个数
#' @param y 第二个数
#' @return 两个数的和
#' @examples
#' add(1, 2)
#' @export
add <- function(x, y) {
return(x + y)
}
然后使用roxygen2生成文档:
library(roxygen2)
roxygenize("mypackage")
编写单元测试
在tests/testthat/目录下编写单元测试,确保你的函数能够正确运行。例如:
test_that("add function works", {
expect_equal(add(1, 2), 3)
expect_equal(add(-1, 1), 0)
})
运行测试:
library(testthat)
test_dir("mypackage/tests/testthat")
检查包
使用devtools包的check()函数检查包是否符合CRAN的要求:
check("mypackage")
提交包到CRAN
- 注册CRAN账户:如果你还没有CRAN账户,需要先注册一个。
- 准备包:确保包已经通过
check()检查,并且所有依赖项都已正确声明。 - 提交包:使用
devtools包的submit_cran()函数提交包:
submit_cran("mypackage")
- 等待审核:CRAN会审核你的包,可能会要求你进行一些修改。根据反馈进行修改并重新提交。
实践练习
- 创建一个简单的R包:编写一个包含两个函数的R包,一个函数用于计算两个数的和,另一个函数用于计算两个数的差。
- 生成文档:使用
roxygen2生成函数的文档。 - 编写测试:为每个函数编写单元测试,并确保测试通过。
- 检查包:使用
check()函数检查包是否符合CRAN的要求。 - 提交包:尝试将你的包提交到CRAN,并根据反馈进行修改。
总结
发布包到CRAN是一个复杂但非常有价值的过程。通过这个过程,你不仅可以提升自己的编程技能,还能为R社区做出贡献。希望这篇教程能帮助你顺利地将你的R包发布到CRAN上。