[R] First R Package --- Advice?

ivo welch ivo.welch at anderson.ucla.edu
Wed Feb 6 01:43:56 CET 2013


Dear R experts---

after many years, I am planning to give in and write my first R
package.  I want to combine my collection of collected useful utility
routines.

as my guide, I am planning to use Friedrich Leisch's "Creating R
Packages: A Tutorial" from Sep 2009.  Is there a newer or better
tutorial?  this one is 4 years old.

I also plan on one change---given that the package.skeleton() function
writes all the individual man[ual] functions, I am thinking it would
be a good idea to put the doc and the R code together in the same
file, one for each function.  Interestingly enough, the code is by
default in the \examples{} section, so I am thinking of writing a perl
program that takes every .Rd file and writes the function into the R/
directory, overwriting anything else that is already there.  this way,
I maintain only one file for each function, and the docs and code are
together.  sort of like knuth's literate programming and the
numerical-recipees approach to keeping each function in its own file
with equal name.

I believe my "try-out and debug cycle" will then be

   $ cd iaw  ## the package name and top directory is iaw
   $ perl weaveall.pl   ## extract all man/*.Rd files code examples
and place them in R/
   $ R CMD INSTALL iaw
   $ R CMD check iaw

good idea?  bad idea?  common?  uncommon?

I do not understand the namespace mechanism yet.  I understand the
NAMESPACE file, and I think this lists the routines that become
visible when a later program of mine contains 'library(iaw)'.  I think
I want to explicitly declare what packages are actually imported.
?importIntoEnv tells me that it is not intended to be used.  how can
another program declare exactly what functions it wants to import?
(frankly, I would love to turn all default autovivification off in my
program, but that's not possible.)

/iaw
----
Ivo Welch (ivo.welch at gmail.com)



More information about the R-help mailing list