From S@Elli@on @ending from LGCGroup@com  Thu Nov 29 16:48:02 2018
From: S@Elli@on @ending from LGCGroup@com (S Ellison)
Date: Thu, 29 Nov 2018 15:48:02 +0000
Subject: [Rd] Unexpected argument-matching when some are missing
In-Reply-To: <AA681EA4-D0C7-4A2F-A719-01E510635C45@dans.knaw.nl>
References: <AA681EA4-D0C7-4A2F-A719-01E510635C45@dans.knaw.nl>
Message-ID: <2ffdc3d61fcd4b098fa37a35a5cdffc9@GBDCVPEXC08.corp.lgc-group.com>

> 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 at r-project.org] On Behalf Of Emil
> Bode
> Sent: 29 November 2018 10:09
> To: r-devel at 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 at 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


[Rd] Unexpected argument-matching when some are missing
S Ellison