[R] define subset argument for function lm as variable?

Rainer M Krug r.m.krug at gmail.com
Tue Aug 21 17:11:14 CEST 2012


On 21/08/12 16:57, Bert Gunter wrote:
> ?? I do not groc what you mean. ... subset == subs would work fine in
> your lm call. So unless someone else does get it, you may need to
> elaborate.

OK - here is an example:

dat <- data.frame(
          ctl = c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14),
          trt = c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69),
          group = gl(2,10,20, labels=c("Ctl","Trt")),
          weight = c(ctl, trt)
          )
lm(weight ~ group, data=dat, subset=trt>0)

subst <- trt>0 ### here I get the obvious error: Error: object 'trt' not found

# I want to use:

lm(weight ~ group, data=dat, subset=subst)


>
> In general, ?substitute, ?bquote, and ?quote are useful to avoid
> immediate evaluation of calls, but I don't know if that's relevant to
> what you want here.

Looks promising from the help, but I don't get it to work.

Rainer

>
> -- Bert
>
> On Tue, Aug 21, 2012 at 7:44 AM, Rainer M Krug <r.m.krug at 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:      Rainer at krugs.de
>>
>> Skype:      RMkrug
>>
>> ______________________________________________
>> R-help at 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.
>
>
>


-- 
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:      Rainer at krugs.de

Skype:      RMkrug




More information about the R-help mailing list