> In a nutshell, formulas carry the environment in which they are defined along
> with the variable names, and your dfr was defined in the test.FN environment,
> but the formulas were defined in the global environment. I got this to work by
> defining the formula character strings in the global environment, and then
> converting those strings to formulas in the function. I don't think you can 
> trick
> lm into referring to the global environment from within test.FN so that
> summaries refer to the X.des data frame instead of dfr (but someone could
> prove me wrong).

If you want a function to refer to something in the global environment, just 
refer to the global object in the function. If the object name isn't used in 
the function's scope, it is sought in the parent environment. So the original 
code works if 
test.FN <-  function(scope, k=2){
      temp.lm=lm(scope$lower, data=X.des)  ## X.des is sought in parent 
environment
      step(temp.lm, scope=scope$upper, k=k)
      }

Admittedly, I'd not regard that kind of thing as a good idea; fragile and 
inflexible. But if you are clear about scope it does work.

Another way to proceed, somewhat more safely, is to wrap the whole thing in a 
function, passing X.des as dfr, then defining test.FN inside the outer function 
so that you know where it's going to get dfr from. Something along the lines of

test.step <- function(dfr, Y) {
        test.FN <-  function(scope, k=2){
                temp.lm=lm(scope$lower, data=dfr)  ## X.des 
                print(temp.lm)
                 step(temp.lm, scope=as.formula(scope$upper), k=k)
        }
        scope <- list( lower= as.formula('Y~1'), 
                upper=as.formula(paste('Y~', paste(names(dfr[1:20]), 
collapse="+"))) 
        )
        test.FN(scope=scope)
}

test.step(X.des, Y)


S Ellison



*******************************************************************
This email and any attachments are confidential. Any use...{{dropped:8}}

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to