[R] Formula in lm inside lapply

Weiwei Shi helprhelp at gmail.com
Wed Aug 15 18:57:24 CEST 2007


try this:

> x = predict(z, Iris[-train, ])
> x1 <- rnorm(100,1)
> x2 <- rnorm(100,1)
> y  <- rnorm(100,1)
> group <- rep(c("A","B"),c(40,60))
> group <- factor(group)
> df <- data.frame(y,x1,x2,group)
> resf1 <- lapply(levels(df$group),function(x) {formula1 <- as.formula(y~x1); lm(formula1,df, subset =group ==x)}) # put the formula defn into function(x)
> resf1
[[1]]

Call:
lm(formula = formula1, data = df, subset = group == x)

Coefficients:
(Intercept)           x1
     0.8532       0.1189


[[2]]

Call:
lm(formula = formula1, data = df, subset = group == x)

Coefficients:
(Intercept)           x1
     0.7116       0.3398

HTH,

Weiwei

On 8/15/07, Li, Yan (IED) <Yan.Y.Li at morganstanley.com> wrote:
> I am trying to run separate regressions for different groups of
> observations using the lapply function. It works fine when I write the
> formula inside the lm() function. But I would like to pass formulae into
> lm(), so I can do multiple models more easily. I got an error message
> when I tried to do that. Here is my sample code:
>
> #generating data
> x1 <- rnorm(100,1)
> x2 <- rnorm(100,1)
> y  <- rnorm(100,1)
> group <- rep(c("A","B"),c(40,60))
> group <- factor(group)
> df <- data.frame(y,x1,x2,group)
>
> #write formula inside lm--works fine
> res1 <- lapply(levels(df$group), function(x) lm(y~x1,df, subset = group
> ==x))
> res1
> res2 <- lapply(levels(df$group),function(x) lm(y~x1+x2,df, subset =
> group ==x))
> res2
>
> #try to pass formula into lm()--does not work
> formula1 <- as.formula(y~x1)
> formula2 <- as.formula(y~x1+x2)
> resf1 <- lapply(levels(df$group),function(x) lm(formula1,df, subset =
> group ==x))
> resf1
> resf2 <- lapply(levels(df$group),function(x) lm(formula2,df, subset =
> group ==x))
> Resf2
>
> The error message is
> 'Error in eval(expr, envir, enclos): object "x" not found'
>
> Any help is greatly appreciated!
>
> Yan
> --------------------------------------------------------
>
> This is not an offer (or solicitation of an offer) to buy/se...{{dropped}}
>
> ______________________________________________
> 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
> and provide commented, minimal, self-contained, reproducible code.
>


-- 
Weiwei Shi, Ph.D
Research Scientist
GeneGO, Inc.

"Did you always know?"
"No, I did not. But I believed..."
---Matrix III



More information about the R-help mailing list