On Jul 15, 2011, at 15:06 , peter dalgaard wrote:
> For a little lateral thinking, consider the use of "." on the LHS. That could
> play out as follows:
>
>> myvars <- c("Ozone","Wind")
>> f <- . ~ Month
>> j <- union(all.vars(f[[3]]), myvars)
>> aggregate(. ~ Month, data=airquality[j], mean, na.rm=T)
> Month Ozone Wind
> 1 5 23.61538 11.457692
> 2 6 29.44444 12.177778
> 3 7 59.11538 8.523077
> 4 8 59.96154 8.565385
> 5 9 31.44828 10.075862
>
> (and of course, when you play with something unusual, a buglet pops up: it
> doesn't work with f instead of the explicit formula in the call to aggregate.)
>
...however, once you go down that road, you might as well construct the LHS
directly:
> lhs <- as.call(lapply(c("cbind", myvars), as.name))
> eval(bquote(aggregate(.(lhs) ~ Month, data=airquality, mean, na.rm=T)))
Month Ozone Wind
1 5 23.61538 11.457692
2 6 29.44444 12.177778
3 7 59.11538 8.523077
4 8 59.96154 8.565385
5 9 31.44828 10.075862
--
Peter Dalgaard
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: [email protected] Priv: [email protected]
______________________________________________
[email protected] 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.