Le mercredi 29 août 2012 à 14:26 +0200, Milan Bouchet-Valat a écrit : > Le mercredi 29 août 2012 à 04:01 -0700, Joshua Wiley a écrit : > > On Wed, Aug 29, 2012 at 3:56 AM, Milan Bouchet-Valat <nalimi...@club.fr> > > wrote: > > > Le mardi 21 août 2012 à 07:51 -0700, Joshua Wiley a écrit : > > >> Hi Rainer, > > >> > > >> You could try: > > >> > > >> subs <- expression(dead==FALSE & recTreat==FALSE) > > >> > > >> lme(formula, subset = eval(subs)) > > >> > > >> Not tested, but something along those lines should work. > > > Out of curiosity, why isn't "subset" (and "weights", which is very > > > similar in that regard) evaluated in the "data" environment, just like > > > the formula? Is this for historical reasons, or are there drawbacks to > > > such a feature? > > > > I am not sure about weights offhand, but subset is evaluated in the > > data environment----that is why that solution works. The original > > question was how to setup the expression as an object that was passed > > to subset. The trick is to avoid having the logical expression > > evaluated when the object is created, which I avoided by using > > expression, and then in lme() forcing the evaluation of the object. > OK, my phrasing was not really correct. What I meant (and what triggered > the OP question) was : why doesn't the "subset" argument behave the same > in lm() and in subset.data.frame()? Is there any advantage to evaluating > the argument at the object creation? Nevermind, forget this silly question. This works exactly as I describe it, it's just that I did not get the OP's problem right, and for an unexplained reason in my testing this did not work. But now I realize, as you said, the problem is just that the OP wanted to store the subset in an object first.
Sorry for the noise - at least I learned I can specify "weights" the easy way... ;-) > AFAICS, subset.data.frame() merely uses this trick: > e <- substitute(subset) > r <- eval(e, x, parent.frame()) > > > I'm probably missing something... ;-) > > > > It seems very common to pass a data frame via the "data" argument, and > > > use variables from it for subsetting and/or weighting. > > > > > > > > > Regards > > > > > > > > >> Josh > > >> > > >> On Tue, Aug 21, 2012 at 7:44 AM, Rainer M Krug <r.m.k...@gmail.com> > > >> wrote: > > >> > Hi > > >> > > > >> > I want to do a series of linear models, and would like to define the > > >> > input > > >> > arguments for lm() as variables. I managed easily to define the formula > > >> > arguments in a variable, but I also would like to have the "subset" in > > >> > a > > >> > variable. My reasoning is, that I have the subset in the results > > >> > object. > > >> > > > >> > So I wiould like to add a line like: > > >> > > > >> > subs <- dead==FALSE & recTreat==FALSE > > >> > > > >> > which obviously does not work as the expression is evaluated > > >> > immediately. Is > > >> > is it possible to do what I want to do here, or do I have to go back > > >> > to use > > >> > > > >> > dat <- subset(dat, dead==FALSE & recTreat==FALSE) > > >> > > > >> > ? > > >> > > > >> > > > >> > > > >> > dat <- loadSPECIES(SPECIES) > > >> > feff <- height~pHarv*year # fixed effect in the model > > >> > reff <- ~year|plant # random effect in the model, > > >> > where > > >> > year is the > > >> > dat.lme <- lme( > > >> > fixed = feff, # fixed effect in > > >> > the > > >> > model > > >> > data = dat, > > >> > random = reff, # random effect > > >> > in the > > >> > model > > >> > correlation = corAR1(form=~year|plant), # > > >> > subset = dead==FALSE & recTreat==FALSE, # > > >> > na.action = na.omit > > >> > ) > > >> > dat.lm <- lm( > > >> > formula = feff, # fixed effect in the model > > >> > data = dat, > > >> > subset = dead==FALSE & recTreat==FALSE, > > >> > na.action = na.omit > > >> > ) > > >> > > > >> > Thanks, > > >> > > > >> > Rainer > > >> > > > >> > -- > > >> > Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation > > >> > Biology, > > >> > UCT), Dipl. Phys. (Germany) > > >> > > > >> > Centre of Excellence for Invasion Biology > > >> > Stellenbosch University > > >> > South Africa > > >> > > > >> > Tel : +33 - (0)9 53 10 27 44 > > >> > Cell: +33 - (0)6 85 62 59 98 > > >> > Fax : +33 - (0)9 58 10 27 44 > > >> > > > >> > Fax (D): +49 - (0)3 21 21 25 22 44 > > >> > > > >> > email: rai...@krugs.de > > >> > > > >> > Skype: RMkrug > > >> > > > >> > ______________________________________________ > > >> > 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. > > >> > > >> > > >> > > > > > > > > > > > ______________________________________________ > 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. ______________________________________________ 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.