From h.wickham at gmail.com  Fri Feb 23 17:05:01 2007
From: h.wickham at gmail.com (hadley wickham)
Date: Fri, 23 Feb 2007 10:05:01 -0600
Subject: [Rd] Functions that write functions in R packages
Message-ID: <f8e6ff050702230805s2c45957epe516e5b431a7cdd2@mail.gmail.com>

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



[Rd] Functions that write functions in R packages
hadley wickham