Re: [R] glm inside one self-defined function

From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Thu 24 Aug 2006 - 03:12:53 EST

Your example works for me without any error messages in R 2.3.1 with the current (uncredited) MASS package 7.2-27.1, including giving about 20 'ok here.'.

Did you heed the advice in the posting guide to update (as well as to tell us the versions of things you were using)? Probably not (as you sent HTML mail)!

[One thing you are leaving out is

> library(MASS)

]

On Wed, 23 Aug 2006, Mike Wolfgang wrote:

> Thanks Bill and Simon. I wrote a simpler function to test and found out it
> was stepAIC which causes error, and I still don't know how to solve it.
> Check out this simple function:
>
>
> myfun<-function(k){
> xx<-mvrnorm(100,rep(0,10),diag(1,10),empirical=TRUE)
> colnames(xx)<-paste("x",1:10,sep='')
> py<-exp(sum(xx))/(1+exp(sum(xx)))
> for (i in 1:k){
> y<-rbinom(100,1,py)
> mydata<-data.frame(cbind(y,xx))
> y.glm<-glm(y~.,binomial,mydata)
> cat("ok here.\n")
> y.step<-stepAIC(y.glm,direction='both',trace=0)
> cat("ok here.\n")
> print(summary(y.step))
> }
> }
>
> myfun(10)
>
> only one "ok here" is printed.
>
> Mike
>
> On 8/22/06, Bill.Venables@csiro.au <Bill.Venables@csiro.au> wrote:
> >
> > Mike Wolfgang asks:
> >
> > >
> > > From: r-help-bounces@stat.math.ethz.ch
> > [mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Mike Wolfgang
> > > Sent: Wednesday, 23 August 2006 1:31 PM
> > > To: R-help list
> > > Subject: [R] glm inside one self-defined function
> > >
> > > Hi list,
> > >
> > > I've searched in R-help and found some related discussions but still
> > could
> > > not understand this type of error. My own function is pretty complex,
> > so I
> > > would not put it here, but the basic algorithm is like this:
> > > myfun<-function(k){
> > > mydata<-...#by someway I create a data frame
> > > mymodel<-glm(y~.,family=binomial(),data=mydata)
> > > ...#some other stuff
> > > }
> >
> > I think you are leaving out something. Here is a test of what you
> > claim gives a problem (R 2.3.1, Windows):
> >
> > > myfun <- function(n) {
> > + z <- rnorm(n)
> > + mydata <- data.frame(x = z,
> > + y = rbinom(n, size = 1, prob = exp(z)/(1+exp(z))))
> > + fm <- glm(y ~ x, binomial, mydata)
> > + fm
> > + }
> > >
> > > myfun(100)
> >
> > Call: glm(formula = y ~ x, family = binomial, data = mydata)
> >
> > Coefficients:
> > (Intercept) x
> > 0.1587 1.0223
> >
> > Degrees of Freedom: 99 Total (i.e. Null); 98 Residual
> > Null Deviance: 137.6
> > Residual Deviance: 118.3 AIC: 122.3
> >
> > Not even a murmur of complaint. (This also works in S-PLUS 7.0 but
> > earlier versions of S-PLUS gave a problem rather like the one you note,
> > curiously.)
> >
> > Look again at your code and see if the abstract version you give
> > really matches what you did, may I suggest?
> >
> > >
> > > as I execute this function, it gives error like this
> > > Error in inherits(x, "data.frame") : object "mydata" not found
> > >
> > > So I guess glm here tries to find "mydata" in the parent environment.
> > Why
> > > doesn't it take "mydata" inside the function? How to let glm correctly
> > > locate it? Is this (scope/environment) mentioned in R manual? Thanks,
> > >
> > > Mike
> >
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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
> and provide commented, minimal, self-contained, reproducible code.
>

-- 
Brian D. Ripley,                  ripley@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
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
and provide commented, minimal, self-contained, reproducible code.
Received on Thu Aug 24 03:16:24 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 Thu 24 Aug 2006 - 06:22:38 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.