[Rd] data argument and environments
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Sun Apr 12 21:37:52 CEST 2009
roger koenker wrote:
> Thanks. Yes, I wrote rqss, and attempted to follow the structure of
> lm, and various analogues,
> for example in survival4. My problem seems to be that my lam variable
> is not part of
> the data frame d, and I don't know how to manipulate the environment for
> the formula
> so that it is found. There is an untangle.specials() call
>
> tmpc <- untangle.specials(Terms, "qss")
>
> and then each of the "specials" terms are evaluated in:
>
> qss <- lapply(tmpc$vars, function(u) eval(parse(text = u), data))
>
> which is fine if the data hasn't been specified so it defaults to
> parent.frame(), since in
> this case variables and lam can all be found in the parent.frame, but if
> it is specified as a data frame for the variables of the model, then the
> lam value is
> unavailable. My impression is that it is somewhat unusual to pass data
> other than
> variables from the data frame itself for evaluation of the formula -- I
> thought there
> were examples in mgcv, but I now see that lamdas in gam() are passed as
> separate
> arguments, rather than in the special components of the formula.
> Perhaps I need
> to revert to this strategy, but I'd prefer not to. Surely, there is
> some good way to modify
> the above lapply so that eval finds both stuff in data and in the
> parent.frame? It
> appears that I can simply define pf <- parent.frame() and then add
> enclos = pf
> to the above eval() call, is this ok?
I think more likely you want enclos=environment(formula). This is the
point, the formula-with-environment construction allows both
h <- function(x,y) mymodel(y~x)
h(u,v)
and
h <- function(f) mymodel(f)
h(u~v)
to find their variables in the right place.
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-devel
mailing list