关于 r-package-development
面向 R 包开发的实践规则与命令参考,涉及代码风格、测试、文档和 NEWS.md。适合在开发过程中统一实现、检查与发布说明的处理方式。
主要功能
- 01执行包代码与测试的命令
- 02代码格式与管道风格约定
- 03测试编写和断言规则
- 04roxygen2 与 pkgdown 文档规范
- 05NEWS.md 条目编写规则
适用场景
- 01运行包代码或指定测试
- 02为新代码补充并组织测试
- 03更新导出函数文档与 NEWS.md
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ posit-dev/ skills --skill r-package-development安装后在 Claude Code 中输入/r-package-development确认已加载。
详细介绍
R 包开发
关键命令
# Run code in the package
Rscript -e "devtools::load_all(); code"
# Run all tests
Rscript -e "devtools::test()"
# Run all tests for files starting with {name}
Rscript -e "devtools::test(filter = '^{name}')"
# Run all tests for R/{name}.R
Rscript -e "devtools::test_active_file('R/{name}.R')"
# Run a single test "blah" for R/{name}.R
Rscript -e "devtools::test_active_file('R/{name}.R', desc = 'blah')"
# Redocument the package
Rscript -e "devtools::document()"
# Check pkgdown documentation
Rscript -e "pkgdown::check_pkgdown()"
# Check the package with R CMD check
Rscript -e "devtools::check()"
# Format code
air format .
编码
- 生成代码后,始终运行
air format .。 - 使用基础管道运算符(
|>),不要使用 magrittr 管道(%>%)。 - 单行匿名函数使用
\() ...。其他情况均使用function() {...}。
测试
R/{name}.R的测试放在tests/testthat/test-{name}.R中。- 所有新增代码都应附带测试。
- 如果已有测试,请将新测试放在相似的现有测试旁边。
- 尽量让测试保持精简,少写注释。
- 避免使用
expect_true()和expect_false(),改用能提供更明确失败消息的具体断言。 - 测试错误和警告时,不要使用
expect_error()或expect_warning()。错误应使用expect_snapshot(error = TRUE),警告应使用expect_snapshot(),因为这样用户可以查看输出的完整文本。
文档
- 每个面向用户的函数都应导出,并附有 roxygen2 文档。
- roxygen 注释每行不超过 80 个字符。
- 内部函数不应有 roxygen 文档。
- 每当新增文档主题(非内部主题)时,也要将该主题添加到
_pkgdown.yml。 - 修改 roxygen2 注释后,始终重新生成包文档。
- 使用
pkgdown::check_pkgdown()检查所有主题是否都包含在参考索引中。
NEWS.md
- 每项面向用户的更改都应在
NEWS.md中添加一条项目符号。小型文档更改或内部重构不必添加。 - 每条项目符号都应简要说明该更改对最终用户的影响。
- 如果更改与某个函数相关,请在项目符号开头附近写出函数名称。
- 如果项目符号与 GitHub issue 或拉取请求相关,请在句号前用括号注明编号:
(#123).。 - 按函数名称的字母顺序排列项目符号。未提及函数名称的项目符号放在最前面。
评论
支持 Markdown