On Fri, Jun 25, 2010 at 8:59 PM, Vadim Ogranovich <vogranov...@jumptrading.com> wrote: > Dear R users, > > > As substitute() help page points out: > Substituting and quoting often causes confusion when the argument > is 'expression(...)'. The result is a call to the 'expression' > constructor function and needs to be evaluated with 'eval' to give > the actual expression object. > > And indeed I am confused. Consider: > >> dat <- data.frame(x=1:10, y=1:10) > >> subsetexp <- substitute(a<x, list(a=5)) > > ## this doesn't work >> subset(dat, subsetexp) > Error in subset.data.frame(dat, subsetexp) : > 'subset' must evaluate to logical > > ## this does work (thanks to the help page), but one needs to remember to > call eval >> subset(dat, eval(subsetexp)) > >
If its ok to call it this way then it works without the eval: do.call(subset, list(dat, subsetexp)) ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.