library("pax") desc <- suppressWarnings(readLines("DESCRIPTION")) regex <- "(^Version:\\s+)(\\d+\\.\\d+\\.\\d+)" loc <- grep(regex, desc) ver <- gsub(regex, "\\2", desc[loc]) verbad <- sprintf('<a href="https://img.shields.io/badge/Version-%s-orange.svg"><img src="https://img.shields.io/badge/Version-%s-orange.svg" alt="Version"/></a></p>', ver, ver) ```` ```r library(knitr) knit_hooks$set(htmlcap = function(before, options, envir) { if(!before) { paste('<p class="caption"><b><em>',options$htmlcap,"</em></b></p>",sep="") } }) knitr::opts_knit$set(self.contained = TRUE, cache = FALSE) knitr::opts_chunk$set(fig.path = "tools/figure/")
A gold version R package template.
pax is a package template system that is NOT designed to be light weight. It is the deluxe, gold version of a package template. pax enforces a fairly narrow package management philosophy. It expects the user will utilize:
pax has one main function that does one job. pax
(package and function named pax) creates a package template. It allows the user to specify construction arguments (locally or via options in .Rprofile). Arguments that can be set in the .Rprofile include:
| Argument | Description | Example |
|------------------|---------------------------------------------|-----------------------------------------------------|
| name
| The user's name (first & last) | options(name = c(first="Tyler", last="Rinker"))
| |
| email
| The user's email address | options(email = "tyler.rinker@gmail.com")
|
| license
| The package license | options(license = "GPL-2")
|
| github.user
| The user's GitHub name | options(github.user = "trinker")
|
| samples
| Logical; if TRUE
, sample .R & test-.R added | options(samples = FALSE)
|
| tweak
| A function or path/url to a user specified 'tweaking' function* | options(tweak = "http://goo.gl/oL7UXO")
|
*Note: See ?pax
for more information about the tweak
argument; CLICK HERE for an example.
These arguments can be quickly added by using the pax_options
function. This generates the following blank script that can be added to the user's .Rprofile:
pax_options()
The standard pax template looks like:
| .gitignore | .Rbuildignore | DESCRIPTION | foo.rproj | NEWS | README.md | README.Rmd | travis.yml | +---inst | maintenance.R | +---R | foo-package.R | sample.R | utils.R | \---tests | testthat.R | \---testthat test-sample.R
To download the development version of pax:
Download the zip ball or tar ball, decompress and run R CMD INSTALL
on it, or use the pacman package to install the development version:
if (!require("pacman")) install.packages("pacman") pacman::p_load_current_gh("trinker/pax")
| Function | Description |
|----------------|-----------------|
| new_r
| Makes roxygen2 style .R template file from a function
or character string |
| new_test
| Makes testthat style unit test template file from a function
or character string |
| new_r_test
| Makes roxygen2 style .R and testthat style unit test files from a function
or character string |
| new_data
| Adds data & appends roxygen2 style template to package description .R file |
| new_vignette
| Makes rmarkdown style .Rmd vignette template file |
In addition to the pax
templating function, pax also has a few additional tools to generate .R and test-____.R scripts that add a roxygen2 style .R file to the R directory as well as adding a testthat style unit test file to tests/testthat directory. These actions can be done separately but it is recommended that they be combined into one function call: new_r_test
. This sets a test-driven development expectation that as a function is created a unit test is used in the development process.
The new_data
enables the user to add a data set to the data directory and append the roxygen2 style .R markup template to the package's description file (R/____-package.R). The new_vignette
function provides a means of quickly adding an rmarkdown with the appropriate title
field and \VignetteIndexEntry
set.
You are welcome to: submit suggestions and bug-reports at: https://github.com/trinker/pax/issues send a pull request on: https://github.com/trinker/pax/ * compose a friendly e-mail to: tyler.rinker@gmail.com
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.