PhD Cognitive Neurosciences 🧠
@rladies.org Global Team.
#Rstats #Nerd 🌈🏳️🌈
https://Drmowinckels.io
#Hugo #NPM #WebDev #BuildTools #OpenSource #Automation
#Hugo #NPM #WebDev #BuildTools #OpenSource #Automation
Link: https://drmo.site/8ny3eU
Link: https://drmo.site/8ny3eU
25 days. Complete modern R package development workflow. From usethis automation to CRAN submission. You have everything you need!
#rstats #CRAN #RPackageAdvent2025 #ThatsAWrap
25 days. Complete modern R package development workflow. From usethis automation to CRAN submission. You have everything you need!
#rstats #CRAN #RPackageAdvent2025 #ThatsAWrap
Final steps for successful CRAN submission.
Pro Tip: Be proactive about communicating any unusual aspects of your package to CRAN reviewers.
#rstats #RPackageAdvent2025
Final steps for successful CRAN submission.
Pro Tip: Be proactive about communicating any unusual aspects of your package to CRAN reviewers.
#rstats #RPackageAdvent2025
We celebrated just the three of us, with a quiet and lovely celebration. After two Christmases that have been quite difficult, it was nice to have a semblance of normality.
We celebrated just the three of us, with a quiet and lovely celebration. After two Christmases that have been quite difficult, it was nice to have a semblance of normality.
Handle user expressions safely in package functions.
Pro Tip: Use {{ }} (embrace) for single arguments, ... for multiple arguments.
Resources: rlang.r-lib.org
#rstats #RPackageAdvent2025
Handle user expressions safely in package functions.
Pro Tip: Use {{ }} (embrace) for single arguments, ... for multiple arguments.
Resources: rlang.r-lib.org
#rstats #RPackageAdvent2025
Create user-friendly messages and progress indicators.
Pro Tip: Use semantic markup like {.fn function_name} and {.val value} for consistent formatting.
Resources: cli.r-lib.org
#RpackageAdvent2025 #rstats
Create user-friendly messages and progress indicators.
Pro Tip: Use semantic markup like {.fn function_name} and {.val value} for consistent formatting.
Resources: cli.r-lib.org
#RpackageAdvent2025 #rstats
Create robust object-oriented interfaces with R's object systems.
Pro Tip: Use S3 for simple classes, S4 for complex validation, S7 for modern OOP.
Resources: rconsortium.github.io/S7
#rstats #RPackageAdvent2025
Create robust object-oriented interfaces with R's object systems.
Pro Tip: Use S3 for simple classes, S4 for complex validation, S7 for modern OOP.
Resources: rconsortium.github.io/S7
#rstats #RPackageAdvent2025
Test your package on multiple platforms before CRAN submission.
Resources: r-hub.github.io/rhub/
#rstats #RPackageAdvent2025
Test your package on multiple platforms before CRAN submission.
Resources: r-hub.github.io/rhub/
#rstats #RPackageAdvent2025
Profile and benchmark your package functions.
Pro Tip: Include benchmarks in your test suite to catch performance regressions.
Resources: bench.r-lib.org
#rstats #RPackageAdvent2025
Profile and benchmark your package functions.
Pro Tip: Include benchmarks in your test suite to catch performance regressions.
Resources: bench.r-lib.org
#rstats #RPackageAdvent2025
Maintain consistent, readable code style automatically.
Usage:
lintr::lint_package()
styler::style_pkg()
Pro Tip: Add both to pre-commit hooks for automatic code formatting.
Resources: lintr.r-lib.org
#rstats #RPackageAdvent2025
Maintain consistent, readable code style automatically.
Usage:
lintr::lint_package()
styler::style_pkg()
Pro Tip: Add both to pre-commit hooks for automatic code formatting.
Resources: lintr.r-lib.org
#rstats #RPackageAdvent2025
Record real API responses for reliable, fast tests without hitting live APIs.
Pro Tip: Commit cassette files to git for reproducible tests across environments.
Resources: docs.ropensci.org/vcr
#rstats #RPackageAdvent2025
Record real API responses for reliable, fast tests without hitting live APIs.
Pro Tip: Commit cassette files to git for reproducible tests across environments.
Resources: docs.ropensci.org/vcr
#rstats #RPackageAdvent2025
Test functions that depend on external resources using testthat's built-in mocking.
Pro Tip: Use local_mocked_bindings() to mock functions within the test scope only.
Resources: testthat.r-lib.org
#rstats #RPackageAdvent2025
Test functions that depend on external resources using testthat's built-in mocking.
Pro Tip: Use local_mocked_bindings() to mock functions within the test scope only.
Resources: testthat.r-lib.org
#rstats #RPackageAdvent2025
Test complex outputs that are hard to specify exactly.
Pro Tip: Review snapshot changes carefully - they capture everything, including whitespace and formatting.
#rstats #RPackageAdvent2025
Test complex outputs that are hard to specify exactly.
Pro Tip: Review snapshot changes carefully - they capture everything, including whitespace and formatting.
#rstats #RPackageAdvent2025
Modern testing with the latest testthat features.
Setup:
usethis::use_testthat(3)
Pro Tip: Use test_that() with descriptive names that explain what should happen.
Resources: testthat.r-lib.org
#rstats #RPackageAdvent2025
Modern testing with the latest testthat features.
Setup:
usethis::use_testthat(3)
Pro Tip: Use test_that() with descriptive names that explain what should happen.
Resources: testthat.r-lib.org
#rstats #RPackageAdvent2025
Track how much of your code is tested.
use #nocov for code you don't want to cover (like basic R functions etc)
Pro Tip: Focus on testing critical functions thoroughly rather than chasing 100%.
Resources: covr.r-lib.org
#rstats #RPackageAdvent2025
Track how much of your code is tested.
use #nocov for code you don't want to cover (like basic R functions etc)
Pro Tip: Focus on testing critical functions thoroughly rather than chasing 100%.
Resources: covr.r-lib.org
#rstats #RPackageAdvent2025
Create dynamic READMEs that stay up-to-date with your code.
Setup:
usethis::use_readme_rmd()
Include these sections:
• Installation instructions
• Basic usage example
• Lifecycle badges
• Build status badges
#rstats #RPackageAdvent2025
Create dynamic READMEs that stay up-to-date with your code.
Setup:
usethis::use_readme_rmd()
Include these sections:
• Installation instructions
• Basic usage example
• Lifecycle badges
• Build status badges
#rstats #RPackageAdvent2025
Keep users informed about package changes.
Create NEWS.md:
usethis::use_news_md()
Pro Tip: Follow semantic versioning: MAJOR.MINOR.PATCH for breaking.feature.bugfix changes.
#rstats #RPackageAdvent2025
Keep users informed about package changes.
Create NEWS.md:
usethis::use_news_md()
Pro Tip: Follow semantic versioning: MAJOR.MINOR.PATCH for breaking.feature.bugfix changes.
#rstats #RPackageAdvent2025
Communicate changes to users gracefully with lifecycle badges.
Setup:
usethis::use_lifecycle()
Pro Tip: Use lifecycle stages: experimental → stable → superseded → deprecated.
Resources: lifecycle.r-lib.org
#rstats #RPackageAdvent2025
Communicate changes to users gracefully with lifecycle badges.
Setup:
usethis::use_lifecycle()
Pro Tip: Use lifecycle stages: experimental → stable → superseded → deprecated.
Resources: lifecycle.r-lib.org
#rstats #RPackageAdvent2025
Transform your package documentation into a polished website.
Advanced customization:
Auto-deployment:
usethis::use_github_action("pkgdown")
Pro Tip: Group functions logically in the reference section for better navigation.
#rstats #RPackageAdvent2025
Transform your package documentation into a polished website.
Advanced customization:
Auto-deployment:
usethis::use_github_action("pkgdown")
Pro Tip: Group functions logically in the reference section for better navigation.
#rstats #RPackageAdvent2025
Master documentation with advanced roxygen2 features, with markdown-style writing! 🎯
💡 Pro Tip: Use @inheritDotParams to inherit ... parameter documentation.
📚 Resources: roxygen2.r-lib.org
#rstats #roxygen2 #Documentation #RPackageAdvent2025
Master documentation with advanced roxygen2 features, with markdown-style writing! 🎯
💡 Pro Tip: Use @inheritDotParams to inherit ... parameter documentation.
📚 Resources: roxygen2.r-lib.org
#rstats #roxygen2 #Documentation #RPackageAdvent2025
#rstats #RPackageAdvent2025
The Manual DESCRIPTION Problem: You need to add dplyr to your package. Open DESCRIPTION, find Imports, type "dplyr," hope you didn't typo it, wonder if you need a version constraint, forget to sort alphabetically.
#rstats #RPackageAdvent2025
The Manual DESCRIPTION Problem: You need to add dplyr to your package. Open DESCRIPTION, find Imports, type "dplyr," hope you didn't typo it, wonder if you need a version constraint, forget to sort alphabetically.