Inspired by the post at http://giventhedata.blogspot.tw/2013/02/my-r-package-development-cheat-sheet.html. I have decided to publish my cheat script for package development as well.
Building package used to be a nightmare, filling in all those Rd files manually can cause some serious brain damage. Thanks to the roxygen2 team and knitr, building a package with nice documentation is merely running a script like what I have below. Just modify and change pkgName to the name of your package then your package should be ready in 5 minute.
## Build the package
## ---------------------------------------------------------------------
## Remove the folder if it exists
if(file.exists("./pkgName"))
unlink("pkgName", recursive = TRUE)
## Build the package
package.skeleton("pkgName", code_files = paste("./Codes/",
dir("./Codes/", pattern = "\\.R$"), sep = ""),
force = TRUE)
## Include the data
dir.create("pkgName/data")
file.copy(from = "./FAOcountryProfile.RData",
to = "pkgName/data/", overwrite = TRUE)
file.copy(from = "./FAOregionProfile.RData",
to = "pkgName/data/", overwrite = TRUE)
file.copy(from = "./FAOmetaTable.RData",
to = "pkgName/data/", overwrite = TRUE)
file.copy(from = "./DESCRIPTION", to = "pkgName/",
overwrite = TRUE)
## Include Demo
dir.create("pkgName/demo")
file.copy(from = "./pkgNamedemo.R",
to = "pkgName/demo/", overwrite = TRUE)
cat("pkgNamedemo Demonstration for the pkgName package\n",
file = "pkgName/demo/00Index")
## Use roxygen to build the documentation
library(roxygen2)
roxygenize("pkgName")
## Include vignette
dir.create("./pkgName/inst/doc/")
file.copy(from = "../Documentation/pkgName/pkgName.pdf",
to = "./pkgName/inst/doc/", overwrite = TRUE)
## Create the vignette hack from (http://yihui.name/knitr/demo/vignette/)
## This is not required for R 3.0.0
cat("%\\VignetteIndexEntry{General Manual}\n\\documentclass{article}\n\\begin{document}\n\\end{document}", file = "./pkgName/inst/doc/pkgName.Rnw")
## Build and check the package
system("R CMD INSTALL --build pkgName")
system("R CMD build pkgName")
system("Rcmd check pkgName")
system("Rcmd check --as-cran pkgName")
PS: This is my first post using Rmd, the highlight for R is defintely much better than plain text. However, I think some twick is required for my blog theme.
No comments:
Post a Comment