Achim this is perfect. I had not seen Formula before. Thanks for writing it! Frank
Achim Zeileis-4 wrote > On Fri, 1 Mar 2013, Frank Harrell wrote: > >> Thank you Bill. A temporary re-arrangement of the formula will allow me >> to >> do the usual subset= na.action= processing afterwards. Nice idea. I >> don't >> need the dot notation very often for this application. > > That's what the "Formula" package provides. It allows for multiple parts > and multiple responses on both side of the ~. Internally, the formula is > decomposed and separate terms are produced. And using an auxiliary formula > it is assured that a single model frame (with unified NA processing). And > all of this is hidden from the user by providing methods that are as > standard as possible, see: > > vignette("Formula", package = "Formula") > > hth, > Z > >> Frank >> >> William Dunlap wrote >>> I don't know how much of the information that model.frame supplies you >>> need, >>> but you could make a data.frame containing all the variables on both >>> sides >>> of them >>> formula by changing lhs~rhs into ~lhs+rsh before calling model.frame. >>> E.g., >>> >>> f <- function (formula) { >>> if (length(formula) == 3) { # has left hand side >>> envir <- environment(formula) >>> formula <- formula(call("~", call("+", formula[[2]], >>> formula[[3]]))) >>> environment(formula) <- envir >>> } >>> formula >>> } >>> >>> This doesn't quite take care of the wild-card dot in the formula: >>> straight >>> variables are omitted from dot's expansion but functions of variables >>> are >>> not: >>>> colnames(model.frame(f(log(mpg)+hp ~ .), data=mtcars)) >>> [1] "log(mpg)" "hp" "mpg" "cyl" >>> [5] "disp" "drat" "wt" "qsec" >>> [9] "vs" "am" "gear" "carb" >>> >>> Bill Dunlap >>> Spotfire, TIBCO Software >>> wdunlap tibco.com >>> >>> >>>> -----Original Message----- >>>> From: >> >>> r-help-bounces@ >> >>> [mailto: >> >>> r-help-bounces@ >> >>> ] On Behalf >>>> Of Frank Harrell >>>> Sent: Friday, March 01, 2013 4:17 PM >>>> To: >> >>> r-help@ >> >>>> Subject: [R] Multiple left hand side variables in a formula >>>> >>>> The lattice package uses special logic to allow for multiple >>>> left-hand-side >>>> variables in a formula, e.g. y1 + y2 ~ x. Is there an elegant way to >>>> do >>>> this outside of lattice? I'm trying to implement a data summarization >>>> function that logically takes multiple dependent variables. The usual >>>> invocation of model.frame( ) causes R to try to do arithmetic addition >>>> to >>>> create a single dependent variable. >>>> >>>> Thanks >>>> Frank >>>> >>>> >>>> >>>> ----- >>>> Frank Harrell >>>> Department of Biostatistics, Vanderbilt University >>>> -- >>>> View this message in context: >>>> http://r.789695.n4.nabble.com/Multiple-left-hand-side- >>>> variables-in-a-formula-tp4660060.html >>>> Sent from the R help mailing list archive at Nabble.com. >>>> >>>> ______________________________________________ >>>> >> >>> R-help@ >> >>> 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. >>> >>> ______________________________________________ >> >>> R-help@ >> >>> 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. >> >> >> >> >> >> ----- >> Frank Harrell >> Department of Biostatistics, Vanderbilt University >> -- >> View this message in context: >> http://r.789695.n4.nabble.com/Multiple-left-hand-side-variables-in-a-formula-tp4660060p4660065.html >> Sent from the R help mailing list archive at Nabble.com. >> >> ______________________________________________ >> > R-help@ > 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. >> > > ______________________________________________ > R-help@ > 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. ----- Frank Harrell Department of Biostatistics, Vanderbilt University -- View this message in context: http://r.789695.n4.nabble.com/Multiple-left-hand-side-variables-in-a-formula-tp4660060p4660080.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@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.