Re: [R] macro facility in R

From: Duncan Murdoch <murdoch_at_stats.uwo.ca>
Date: Mon 03 Jul 2006 - 22:15:03 EST

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)

Call:
lm(formula = formula, data = data)

Coefficients:

(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



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 Received on Mon Jul 03 22:36:54 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 Tue 04 Jul 2006 - 00:14:21 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.