[Rd] Functions that write functions in R packages

hadley wickham h.wickham at gmail.com
Fri Feb 23 17:05:01 CET 2007


Dear all,

Another question related to my ggplot package:  I have made some
substantial changes to the backend of my package so that plot objects
can now describe themselves much better.  A consequence of this is
that a number of convenience functions that previously I wrote by
hand, can now be written automatically.  What is the best practice for
creating these functions for bundling in a package?  I see three
possible solutions:

 * dump function specifications out to a .r file
 * dynamically create at package build time so they are including in
the package rdata file
 * dynamically create at package load time

Can anyone offer any advice as to which is preferable? (or if there's
a better way I haven't thought of)

My code currently looks like this (experimenting with two ways of
creating the functions)

create_accessors <- function(objects, name, short=NULL) {
	lapply(objects, function(x) {
		assign(paste(name, x$objname, sep="_"), x$new, pos=globalenv())
		if (!is.null(short)) {
			eval(
				substitute(
					f <- function(plot, ...) plot + add(...),
					list(
						add = as.name(paste(name, x$objname, sep="_")),
						f = as.name(paste(short, x$objname, sep=""))
					)
				), envir = globalenv()
			)
				
		}
	})		
}

Thanks,

Hadley



More information about the R-devel mailing list