Paul Gilbert <[EMAIL PROTECTED]> writes: > Peter Dalgaard wrote: > > >Paul Gilbert <[EMAIL PROTECTED]> writes: > > > > > >>>I.e., when x is missing in g, and g calls f(3,x), f will use its > >>>default value for x. > >>> > >> Yes, that is the behaviour I am looking for. That is, f should do > >> what it normal would do if it were called with x missing. > >> > > > >But if x has a default in g then that default should presumably be > > used? > Yes. The value of x in g would get passed to f, default or otherwise. > If that value is something that indicates x is missing, then it should > be treated as if it is missing in f. This means f should use its > default value, rather than throw an error saying x is missing. > > >And what if x is given a value in the evaluation frame of g > >before it is used by f (which can happen, you know, even after the > >evaluation of f has begun)? Now imagine a longer chain of calls. > > > >I think what you're asking for is essentially dynamic scoping for > >missing arguments: you'd have to backtrack along the call chain to > >find the first instance where x is either given a value or has a > >default. This sounds messy. > > > You understand this better than I do, but I don't think I am asking to > do this. Currently I think f looks back too far and finds x is > missing and g does not have a default value for x, so it throws an > error. Why can't f find its own default value for x?
Because it's being told to use the value of the argument instead. I think. This stuff is treacherous. E.g. what would you expect from this? g <- function(x) {f <- function(y) {x <<- 1; y} ; f(x)} g() -- 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 ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel