| name | r-dev |
| description | R development packages. Use for package development, testing, documentation, code style, and IDE setup. |
R Development Skill
Sub-skills
R package development and tooling.
Package Development
| Package | Description |
|---|
| devtools ★ | Package development tools |
| usethis ★ | Workflow automation |
| roxygen2 ★ | Documentation from comments |
| pkgdown | Package websites |
| testthat ★ | Unit testing |
| covr | Test coverage |
Code Quality
| Package | Description |
|---|
| lintr ★ | Static code analysis |
| styler | Code formatting |
| goodpractice | Package best practices |
Documentation
| Package | Description |
|---|
| roxygen2 ★ | In-source documentation |
| sinew | Generate roxygen skeletons |
| staticdocs | Static HTML docs |
OOP Systems
| Package | Description |
|---|
| R6 ★ | Encapsulated OOP |
| S7 | Next-gen OOP (experimental) |
Debugging & Profiling
| Package | Description |
|---|
| pryr | Understand R internals |
| lineprof | Line profiling |
| profvis | Interactive profiling |
Environment & Reproducibility
| Package | Description |
|---|
| renv ★ | Project environments |
| box | Modern module system |
| import | Import mechanism |
| installr | Install software (Windows) |
Async & Promises
| Package | Description |
|---|
| promises | Async programming |
| future | Parallel/distributed processing |
Deployment
| Package | Description |
|---|
| Rocker | Docker configurations |
| drat | R repositories on GitHub |
IDEs & Editors
| Tool | Description |
|---|
| RStudio ★ | Full-featured IDE |
| VSCode + vscode-R | VS Code support |
| radian | Modern R console |
| IRkernel | Jupyter kernel |
| Nvim-R | Neovim plugin |
Quick Examples
usethis::create_package("mypackage")
usethis::use_package("dplyr")
usethis::use_pipe()
usethis::use_roxygen_md()
devtools::document()
usethis::use_testthat()
usethis::use_test("myfunction")
devtools::test()
devtools::check()
devtools::build()
devtools::install()
add <- function(x, y) {
x + y
}
test_that("add works", {
expect_equal(add(1, 2), 3)
expect_equal(add(-1, 1), 0)
expect_error(add("a", 1))
})
library(R6)
Person <- R6Class("Person",
public = list(
name = NULL,
initialize = function(name) {
self$name <- name
},
greet = function() {
cat("Hello, I'm", self$name, "\n")
}
)
)
p <- Person$new("Alice")
p$greet()
renv::init()
renv::snapshot()
renv::restore()
profvis::profvis({
result <- slow_function(data)
})
Package Development Workflow
usethis::create_package("mypackage")
usethis::use_git()
usethis::use_github()
usethis::use_mit_license()
usethis::use_testthat()
usethis::use_github_action_check_standard()
devtools::document()
devtools::test()
devtools::check()
usethis::use_pkgdown()
pkgdown::build_site()
Resources