[Rd] as.missing
Paul Gilbert
pgilbert at bank-banque-canada.ca
Fri Oct 27 17:53:33 CEST 2006
Peter Dalgaard wrote:
>Paul Gilbert <pgilbert at bank-banque-canada.ca> writes:
>
>
>
>>Peter Dalgaard wrote:
>>
>>
>>
>>>Paul Gilbert <pgilbert at bank-banque-canada.ca> 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()
>
>
>
I'm confused. Neither f nor g have a default here, so I don't think
this is related to what I'm talking about. Currently, in your example, f
find x with a value of 1, and I am not suggesting changing that. I'm
only suggesting that if f finds x is missing, it should look at it's own
default argument.
====================================================================================
La version française suit le texte anglais.
------------------------------------------------------------------------------------
This email may contain privileged and/or confidential inform...{{dropped}}
More information about the R-devel
mailing list