Manuel Morales
2006-Jun-07 20:01 UTC
[R] Using data=x or subset=y in user-defined functions
Dear list members, In some of my functions, I attach the data internally to allow subset commands or to specify a data frame. This works well except for cases where there is a "masking" conflict (which returns a warning). I see some alternative listed in ?attach, but I'm not sure which of them do what I'd like. Any suggestions? Below is how I've been setting up my functions: eg.function <- function(x, data=NULL, subset=NULL, ...) { # Set up environment on.exit(detach(data)) attach(data) if(!is.null(subset)) { data<-subset(data,subset) detach(data) attach(data) } subset = NULL # Function body here output <- x return(output) } Thanks! Manuel
Prof Brian Ripley
2006-Jun-07 20:36 UTC
[R] Using data=x or subset=y in user-defined functions
I suggest you investigate with(). On Wed, 7 Jun 2006, Manuel Morales wrote:> Dear list members, > > In some of my functions, I attach the data internally to allow subset > commands or to specify a data frame. This works well except for cases > where there is a "masking" conflict (which returns a warning). I see > some alternative listed in ?attach, but I'm not sure which of them do > what I'd like. Any suggestions? > > Below is how I've been setting up my functions: > > eg.function <- function(x, data=NULL, subset=NULL, ...) { > > # Set up environment > on.exit(detach(data)) > attach(data) > if(!is.null(subset)) { > data<-subset(data,subset) > detach(data) > attach(data) > } > subset = NULL > > # Function body here > output <- x > return(output) > } > > Thanks! > > Manuel > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595