Helpful links for developing R packages
- rodev package (usethis like)
- Writing an R package from scratch (with usethis)
- usethis package workflow by Emil Hvitfeldt
- Sharla's post on usethis
- R packages by Hadley Wickham
- usethis
- rOpenSci packaging guide
- Packages for testing your R-Packages by Locke Data
- Cheatsheet
- Other resources (by Karl Broman)
- continuous integration (but with gitlab)
Cmd + Alt + Shift + R
to insert skeletonCmd + Shift + L
ordevtools::load_all()
: loads packageCmd + Shift + D
: documentsCmd + Shift + B
: buildsCmd + Shift + T
ordevtools::test()
: runs testsdevtools::build_vignettes()
Cmd + Shift + E
ordevtools::check()
: Runs R CMD check + some additional stuffgoodpractice::gp()
- inspired by seabbs package.
- create a file called
data-raw/create-package.R
:
#install.packages("devtools")
#install.packages("usethis")
usethis::use_description(fields = list(Title = "ggplot2 Extensions for Plotting GWAS Summary Statistics",
`Authors@R` = 'person("Sina", "Rüeger",
email = "[email protected]",
role = c("aut", "cre"))',
Description = "Provides Manhattan plot and QQplot as a ggplot2 extension. For high-dimensional GWAS data there is a hex version of the QQplot (which is more of a diagnostics tool)."))
usethis::use_github_links()
usethis::use_version(which = "minor") ## "major", "minor", "patch", "dev"
# initial setup
usethis::use_data_raw()
#usethis::use_cran_badge()
usethis::use_mit_license("Sina Rüeger")
usethis::use_readme_rmd()
## create `testthat` folder
usethis::use_testthat()
## add Roxygen into description file
usethis::use_roxygen_md()
## Suggest & Imports
## adds suggests and imports to DESCRIPTION
usethis::use_package("ggplot2", type = "Import", min_version = "3.1.0" )
usethis::use_package("dplyr", type = "Import", min_version = "0.7.8" )
usethis::use_package("scales", type = "Import", min_version = "1.0.0" )
usethis::use_package("hexbin", type = "Import", min_version = "1.27.2" )
usethis::use_package("ggrastr", type = "Suggests", min_version = "0.1.7" )
usethis::use_package("GWAS.utils", type = "Suggests", min_version = "0.0.0.9000" )
usethis::use_package("skimr", type = "Suggests" )
usethis::use_package("plyr", type = "Suggests", min_version = "1.8.4" )
usethis::use_package("wesanderson", type = "Suggests", min_version = "0.3.6" )
usethis::use_package("vctrs", type = "Suggests", min_version = "0.1.0" )
usethis::use_package("knitr", type = "Suggests", min_version = "0.1.7" )
usethis::use_package("rmarkdown", type = "Suggests")
usethis::use_package("qqman", type = "Suggests")
usethis::use_pipe()
#Vignettes
usethis::use_vignette("gggwas-reasoning", "ggGWAS reasoning" )
usethis::use_vignette("gggwas-internals", "ggGWAS internals")
##Build site, and make pkgdown
devtools::document()
devtools::build_vignettes()
devtools::build()
usethis::use_package_doc()
codemetar::write_codemeta()
## run examples
devtools::run_examples()
devtools::use_package()
: adds suggests and imports to DESCRIPTIONdevtools::use_testthat()
: createstestthat
folderusethis::use_test("opensnp")
: creates a new testusethis::use_package_doc()
: toplevel package docdevtools::run_examples(pkg = ".", "stat_gwas_qq.Rd")
usethis::use_data(yourdata)
: to export datausethis::use_r()
: create new R fileusethis::ui_done("Report saved to {usethis::ui_path(out_path)}")
For vignettes, first run usethis::use_vignette("my-vignette")
then devtools::build_vignettes()
. Also useful: devtools::install(build_vignettes = TRUE)
.
Version: major.minor.patch.dev, where dev is at least 9000.
$ git tag -a v0.1 -m "<message>"
$ git push origin v0.1
Occasionally mark all code and run
Cmd + I
for indentingCmd + Shift + A
for reformatting (spaces etc.)usethis::use_tidy_style()
(see styler package)- (or run the styler package options in the addins menu, but they will undo some of the stuff from reformatting before)