On 11/04/2009 6:50 PM, roger koenker wrote:
I'm having difficulty with an environmental issue: I have an additive
model fitting function
with a typical call that looks like this:
require(quantreg)
n <- 100
x <- runif(n,0,10)
y <- sin(x) + rnorm(n)/5
d <- data.frame(x,y)
lam <- 2
f <- rqss(y ~ qss(x, lambda = lam), data = d)
this is fine when invoked as is; x and y are found in d, and lam is
found the .GlobalEnv,
or at least this is how I understand it. Now, I'd like to have a
function say,
h <- function(lam)
AIC(rqss(y ~ qss(x, lambda = lam), data = d))
but now, if I do:
rm(lam)
h(1)
Error in qss1(x, constraint = constraint, lambda = lambda, dummies =
dummies, :
object "lam" not found
worse, if there is a "lam" in the .GlobalEnv it is used instead of
the argument specified to h().
If I remove the data=d argument in the function definition then lam is
passed correctly.
presumably because data defaults to parent.env(). I recognize that
this is probably an elementary confusion on my part, but my
understanding of environments is very limited.
I did read the entry for FAQ 7.12, but I'm still unenlightened.
Formulas have environments attached to them, and modelling functions
should look there if they don't find the object in the data argument.
If your h is defined exactly as you wrote it, then the environment of
the y ~ qss(...) formula will automatically be the evaluation frame of
h, so it should be able to find lam.
You wrote rqss, right? So perhaps you aren't evaluating the variables
in the formula in the right place. Do you use model.frame to do it?
(See lm() for an example: it takes the original call to lm, throws away
all but a few arguments, and turns it into a call to model.frame() to
find the necessary variables.) model.frame() knows about environments
and stuff, but assumes linear model-like data.
Duncan Murdoch
url: www.econ.uiuc.edu/~roger Roger Koenker
email rkoen...@uiuc.edu Department of Economics
vox: 217-333-4558 University of Illinois
fax: 217-244-6678 Champaign, IL 61820
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel