[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