Fredrik Karlsson
2005-May-11 09:01 UTC
[R] Subset with selection variable from function argument. Is there another way?
Dear list, I'm making my current code more generic and would like some advise. The basic problem is subset and the name of the column to be compared for selection. What I've come up with is> data(mammals) > set <- bottompremolars" > subset(mammals, eval(parse(file="",text=set)) > 2)This seems a bit odd. Is there a nicer way? /Fredrik
Uwe Ligges
2005-May-11 09:13 UTC
[R] Subset with selection variable from function argument. Is there another way?
Fredrik Karlsson wrote:> Dear list, > > I'm making my current code more generic and would like some advise. > The basic problem is subset and the name of the column to be compared > for selection. > > What I've come up with is > > >>data(mammals) >>set <- bottompremolars"The line above is a) syntactically incorrect and b) the string does not describe a variable in the mammals data hence this is not reproducible at all.>>subset(mammals, eval(parse(file="",text=set)) > 2) >Let's assume set <- "body" Either use get() as in subset(mammals, get(set) > 2) or simple indexing such as: subset(mammals, mammals[[set]] > 2) Uwe Ligges> > This seems a bit odd. Is there a nicer way? > > /Fredrik > > ______________________________________________ > 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
Prof Brian Ripley
2005-May-11 10:22 UTC
[R] Subset with selection variable from function argument. Is there another way?
On Wed, 11 May 2005, Fredrik Karlsson wrote:> Dear list, > > I'm making my current code more generic and would like some advise. > The basic problem is subset and the name of the column to be compared > for selection. > > What I've come up with is > >> data(mammals) >> set <- bottompremolars" >> subset(mammals, eval(parse(file="",text=set)) > 2) > > This seems a bit odd. Is there a nicer way?Try set <- "bottompremolars" mammals[[set]] assuming it is a data frame and you just want the one column. subset() is just a convenience wrapper for the basic indexing operations, which are well worth learning. -- 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