[R] Multiple left hand side variables in a formula

Frank Harrell f.harrell at vanderbilt.edu
Sat Mar 2 02:11:14 CET 2013


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.
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.



More information about the R-help mailing list