[R] Using data=x or subset=y in user-defined functions

Manuel Morales Manuel.A.Morales at williams.edu
Thu Jun 8 20:56:34 CEST 2006


On Thu, 2006-06-08 at 11:54 -0400, Manuel Morales wrote:
> On Wed, 2006-06-07 at 21:36 +0100, Prof Brian Ripley wrote:
> > I suggest you investigate with().

Thanks for the suggestion! Unfortunately, it's not clear to me how to
call with() from a function. The example below fails with the error
message: 'Error in mean(x) : object "a" not found'

data.test <- data.frame(a=c(1:10),b=rnorm(10))

eg.function <- function(x, data)
  with(data, return(mean(x)))

eg.function(a,data.test)

Manuel

> Thanks! Just to be sure, the following will do what I want?
> 
> eg.function <- function(x, data=NULL, subset=NULL, ...) {
>     with(if(is.null(subset)) data else subset(data,subset), {
>  
>     ...
> 
>     })
> }
> 
> > 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:
> > >
> > > 
> > >
> > > # 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
> > >
> >
> 
> ______________________________________________
> 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



More information about the R-help mailing list