[Rd] as.missing
Paul Gilbert
pgilbert at bank-banque-canada.ca
Wed Oct 25 17:47:50 CEST 2006
Peter Dalgaard wrote:
>"Charles C. Berry" <cberry at tajo.ucsd.edu> writes:
>
>
>
>>On Tue, 24 Oct 2006, Duncan Murdoch wrote:
>>
>>
>
>
>
>>>with no defaults. However, this little demo illustrates the point, I think:
>>>
>>>
>>>
>>>>g <- function(gnodef, gdef=1) {
>>>>
>>>>
>>>+ if (missing(gnodef)) cat('gnodef is missing\n')
>>>+ if (missing(gdef)) cat('gdef is missing\n')
>>>+ cat('gdef is ',gdef,'\n')
>>>+ }
>>>
>>>
>>>> f <- function(fnodef, fdef) {
>>>>
>>>>
>>>+ g(fnodef, fdef)
>>>+ }
>>>
>>>
>>>> g()
>>>>
>>>>
>>>gnodef is missing
>>>gdef is missing
>>>gdef is 1
>>>
>>>
>>>> f()
>>>>
>>>>
>>>gnodef is missing
>>>gdef is missing
>>>Error in cat("gdef is ", gdef, "\n") : argument "fdef" is missing, with
>>>no default
>>>
>>>
>>>What would be nice to be able to do is to have a simple way for f() to
>>>act just like g() does.
>>>
>>>
>>Is this what you want?
>>
>>
>>
>>> f <- function(fnodef, fdef=NULL) {
>>>
>>>
>>+ g()}
>>
>>
>>>f()
>>>
>>>
>>gnodef is missing
>>gdef is missing
>>gdef is 1
>>
>>
>
>I think not. More like
>
> f <- function(fnodef, fdef) {
> if(missing(fdef)) g(fnodef) else g(fnodef, fdef)
> }
>
>(the generalization of which is obviously a pain...)
>
>
>
Yes, both a pain and the resulting code can be unnecessarily difficult
to read, compared with something like
f <- function(fnodef, gArgs=as.missing()) {g(fnodef, gArgs) }
which would generalize cleanly.
====================================================================================
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