[R] macro facility in R

Duncan Murdoch murdoch at stats.uwo.ca
Mon Jul 3 14:15:03 CEST 2006

On 7/3/2006 7:39 AM, John Sorkin wrote:
> R 2.2 on windows XP
> I have a dataset with multiple columns. Some of the columns represent
> independent variables, some represent dependent variables. I would like
> to run the same analyses on a fixed set of independent variables,
> changing only the dependent variable, e.g.
> y1-y2=x1+x2+x3
> y3-y4=x1+x2+x3
> y5-y6=x1+x2+x3, etc.
> I know I can write a function to perform the analyses, however in order
> to make the analyses easy to do, I really need a macro scripting
> language that will allow preprocessing of the function and substitution
> of macro variables with parameters passed to the macro, i.e. I need
> someting akin to the macro facility in SAS. Is there a macro facility
> that I can use with R? I have tried help.search("macro") and did not
> have any success.

I think the substitute function in R does most of what you would want 
from a macro facility.

For example,

 > analyze <- function(dependent, data) {
+   formula <- as.formula(substitute(dep ~ x1 + x2 + x3,
+                         list(dep=substitute(dependent))))
+   lm(formula=formula, data=data)
+ }
 > dat <- data.frame(y = rnorm(10)+1:10, x1=rnorm(10)+1:10, 
x2=rnorm(10), x3=rnorm(10))
 > analyze(y, dat)

lm(formula = formula, data = data)

(Intercept)           x1           x2           x3
      1.1256       0.8248       0.1671      -0.1907

I used substitute twice:  the inner call gets the unevaluated expression 
that was passed as "dependent"; the outer one puts that in place of the 
"dep" variable.

Duncan Murdoch

More information about the R-help mailing list