Daniel Gerlanc
2006-Jul-14 18:23 UTC
[R] Splitting the left and right hand terms of a formula
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? Thanks! Daniel Gerlanc Williams College '07
Gabor Grothendieck
2006-Jul-14 18:27 UTC
[R] Splitting the left and right hand terms of a formula
Try this:> all.vars(update(a.formula, .~0))[1] "x"> all.vars(update(a.formula, 0~.))[1] "y" "z" On 7/14/06, Daniel Gerlanc <dgerlanc at gmail.com> wrote:> 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? > > Thanks! > > Daniel Gerlanc > Williams College '07 > > ______________________________________________ > R-help at 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 >