From: Sundar Dorai-Raj <sundar.dorai-raj_at_pdf.com>

Date: Wed 13 Jul 2005 - 00:58:35 EST

*>
*

*> [1] "y"
*

*>
*

*>
*

> Is there a better way and/or preferrred method of determining "y" from

*> my.form than this one? In messing around with terms, I came up with:
*

*>
*

*>
*

*>
*

> [1] "y"

*>
*

*>
*

*> But that seems too ugly to be best.
*

*>
*

*> Thanks,
*

*>
*

*> Dave Kane
*

*>
*

*>
*

*>
*

*>
*

}

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Jul 13 01:12:44 2005

Date: Wed 13 Jul 2005 - 00:58:35 EST

David Kane wrote:

> I have a formula from which I want to deduce the name of the response

*> variable. One way of doing so is as follows:
**>
**>
*

>>my.form <- as.formula("y ~ x + z") >>all.vars(my.form)[1]

> Is there a better way and/or preferrred method of determining "y" from

>>all.vars(terms(my.form))[attr(terms(my.form), "response")]

> [1] "y"

>>R.version

>> _

> platform i686-pc-linux-gnu

> arch i686> os linux-gnu> system i686, linux-gnu> status> major 2> minor 1.0> year 2005> month 04> day 18> language R

David,

Using all.vars as you have might be dangerous if you ever encounter a one sided formula. For example,

all.vars(y ~ x)[1] # "y"

all.vars(~x)[1] # "x"

You might want to look at nlme::getResponseFormula or I wrote a function a while back:

parse.formula <- function(formula) {

vars <- terms(as.formula(formula))

y <- if(attr(vars, "response"))

nlme::getResponseFormula(formula)

x <- nlme::getCovariateFormula(formula)
z <- nlme::getGroupsFormula(formula)

list(response = all.vars(y),

covariates = all.vars(x), groups = all.vars(z))

}

parse.formula(y ~ x)$response # "y"

parse.formula( ~ x)$response # character(0)

**HTH,
**
--sundar

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Jul 13 01:12:44 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:33:34 EST
*