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

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


On 21/08/12 17:35, Eik Vettorazzi wrote:
> Hi Rainer,
> I got an error while replicating your data.frame construction.
>
> But this worked for me
>
> 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)
> dat <- data.frame( group = gl(2,10,20, labels=c("Ctl","Trt")),
>           weight = c(ctl, trt)
>           )

Sorry  - to much garbage in my workspace left.

Just add:

rm(ctl)
rm(trt)

after the definition

> lm(weight ~ group, data=dat, subset=trt>0)

this obviously works, but I would like to have:

subst <- trt>0
lm(weight ~ group, data=dat, subset=subst)

Sorry about this,

Rainer


>
> Cheers
>
> Am 21.08.2012 17:11, schrieb Rainer M Krug:
>> 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