[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