finds.dev← search

// the find

jtleek/rpackages

★ 522 · updated Jan 2024

R package development - the Leek group way!

A style guide for R package development written by Jeff Leek for his biostatistics lab at Johns Hopkins. It covers the full lifecycle from naming and versioning through documentation, unit testing, and Bioconductor submission. Not a package itself — just a README.

- Opinionated and specific where most guides are vague: exact versioning scheme for Bioconductor's 0.99.z pre-submission convention, file naming rules for S4 classes and methods, concrete indent/column limits

- The unit testing section includes a complete worked example with context grouping and multiple failure modes — you see what good tests look like, not just that you should write them

- Covers the maintenance commitment explicitly, which almost no package guides touch: why minimal dependencies matter for a 5-year horizon, when to say no to new features

- The documentation priority diagram gets the hierarchy right: correct behavior first, then documentation, then performance — a useful corrective to people who optimize before their code works

- The ecosystem has moved on substantially since 2013 and this guide hasn't. testthat now uses tests/testthat/, not inst/tests/. usethis replaces half the manual git setup. pkgdown exists for documentation sites. GitHub Actions replaced manual R CMD check. None of this is here.

- It's a Leek group internal document with a public URL — the 'ask Jeff', 'sucker your fellow students', and footnote about the 'succs' package make that clear. The advice is calibrated for a specific lab's workflow, not for someone working alone or in industry.

- No mention of NAMESPACE management pitfalls, which is where most new package authors actually get stuck. roxygen2 is mentioned but the @importFrom vs Depends vs Suggests distinction — the thing that causes 90% of package check failures — is skipped entirely.

- The GitHub setup section still recommends `git push -u origin master` and SSH key setup as a manual step, which is just noise for anyone using modern tooling.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →