Please note that this book is a work in progress, the equivalent of a pre-alpha release. All the code should work, because if it didn’t the site could not be built. But there is still a lot of work to do to explain the historical methods under discussion. Feel free to leave feedback as issues on the GitHub repository, or to e-mail me.

See Hadley Wickham, R Packages (O’Reilly, forthcoming) for a full treatment. See also Hilary Parker, “Writing an R Package from Scratch” for a shorter explanation.

Personal Packages

A personal package is a set of functions that you use repeatedly from one project to the next. It is wise to create a package for these kinds of functions so that you do not have to keep multiple version of a function up to date. For an example from a scientist see Karl Broman’s eponymous browman package, or my mullenMisc package.

Data packages

Data packages are for making data sets readily available inside of R. There are many built in examples, some of which we have already used. One is the mtcars data set:

data(mtcars)
str(mtcars)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Data sets can be documented. For example, try ?mtcars to see a description of the source of the mtcars data set and the variables it contains.

There are a few data sets of interest to historians. Forthcoming: New Nation Votes. Gender package with SSA data set.

If you have a dataset, you should make it publicly available. A good way to do that is on GitHub. But it is not too much extra work to make an R package too.

Libraries

At some point it may make sense to write a general purpose library intended for other people’s use. Do not write a general purpose library starting out. You’ll want to be sure that the package will be useful to you many times before you go through the labor of generalizing it.