[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