[R] Follow Up To: Splitting the left and right hand terms of a formula

From: Daniel Gerlanc <dgerlanc_at_gmail.com>
Date: Wed 26 Jul 2006 - 05:48:00 EST

Hi All,

I sent the following message to R-help on July 14th, 2006:

Let's say I have the following formula:

a.formula <- x ~ y + z

I want to extract the left and right-hand sides of the function so that I have two character vectors like the ones you would create using the following assignments:

left.hand.side <- "x"
right.hand.side <- c("y", "z")

One way to do this follows:

left.hand.side <- unlist(dimnames(attr(terms(a.formula), "factors"))[1]) right.hand.side <- unlist(dimnames(attr(terms(a.formula), "factors"))[-1])

Is there a better or cleaner way to do this?

I got one reply to try this (thanks Gabor!):

> all.vars(update(a.formula, .~0))

[1] "x"

> all.vars(update(a.formula, 0~.))

[1] "y" "z"

This works, but seems a bit of a hack.

There are two methods, "getCovariateFormula", and "getCovariate," which return, respectively, objects of class "formula" for the left and right hand sides of the formula. To get the right hand side or left hand side I wrap one of these method calls in a call to "all.vars". Is there a better way to get the left or right hand side of the formula, or is this it?


Dan Gerlanc
Williams College

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 and provide commented, minimal, self-contained, reproducible code. Received on Wed Jul 26 05:51:33 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 26 Jul 2006 - 08:23:45 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.