[Rd] Unexpected argument-matching when some are missing

S Ellison S@Elli@on @ending from LGCGroup@com
Thu Nov 29 16:48:02 CET 2018


> When trying out some variations with `[.data.frame` I noticed some (to me)
> odd behaviour, 

Not just in 'myfun' ...

plot(x=1:10, y=)
plot(x=1:10, y=, 10:1)

In both cases, 'y=' is ignored. In the first, the plot is for y=NULL (so not 'missing' y)
In the second case, 10:1 is positionally matched to y despite the intervening 'missing' 'y='

So it isn't just 'missing'; it's 'not there at all'

Steve E

> -----Original Message-----
> From: R-devel [mailto:r-devel-bounces using r-project.org] On Behalf Of Emil
> Bode
> Sent: 29 November 2018 10:09
> To: r-devel using r-project.org
> Subject: [Rd] Unexpected argument-matching when some are missing
> 
> When trying out some variations with `[.data.frame` I noticed some (to me)
> odd behaviour, which I found out has nothing to do with `[.data.frame`, but
> rather with the way arguments are matched, when mixing named/unnamed
> and missing/non-missing arguments. Consider the following example:
> 
> 
> 
> myfun <- function(x,y,z) {
> 
>   print(match.call())
> 
>   cat('x=',if(missing(x)) 'missing' else x, '\n')
> 
>   cat('y=',if(missing(y)) 'missing' else y, '\n')
> 
>   cat('z=',if(missing(z)) 'missing' else z, '\n')
> 
> }
> 
> myfun(x=, y=, "z's value")
> 
> 
> 
> gives:
> 
> 
> 
> # myfun(x = "z's value")
> 
> # x= z's value
> 
> # y= missing
> 
> # z= missing
> 
> 
> 
> This seems very counterintuitive to me, I expect the arguments x and y to be
> missing, and z to get “z’s value”.
> 
> When I call myfun(,y=,"z's value"), x is missing, and y gets “z’s value”.
> 
> Are my expectations wrong or is this a bug? And if my expectations are
> wrong, where can I find more information on argument-matching?
> 
> My gut-feeling says to call this a bug, but then I’m surprised no-one else has
> encountered it before.
> 
> 
> 
> And I don’t have multiple installations to work from, so could somebody else
> confirm this (if it’s not my expectations that are wrong) for R-devel/other R-
> versions/other platforms?
> 
> My setup: R 3.5.1, MacOS 10.13.6, both Rstudio 1.1.453 and R --vanilla from
> Bash
> 
> 
> 
> Best regards,
> 
> Emil Bode



*******************************************************************
This email and any attachments are confidential. Any use, copying or
disclosure other than by the intended recipient is unauthorised. If 
you have received this message in error, please notify the sender 
immediately via +44(0)20 8943 7000 or notify postmaster using lgcgroup.com 
and delete this message and any copies from your computer and network. 
LGC Limited. Registered in England 2991879. 
Registered office: Queens Road, Teddington, Middlesex, TW11 0LY, UK


More information about the R-devel mailing list