[R] Weird behaviour function args in ellipses

Bert Gunter bgunter.4567 at gmail.com
Fri Dec 11 20:19:16 CET 2015


I normally don't respond to this sort of rant, but I will here. Feel
free to ignore.

My response is: sour grapes! **I'm really disappointed** that you
failed to read (carefully) the documents (R language manual) or
tutorials (numerous and ubiquitous) that clearly explain this. IMO,
you are blaming others for your failings.

If you care to respond, yours will be the last word. I will not
comment further (and probably shouldn't have here).

Cheers,
Bert


Bert Gunter

"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Fri, Dec 11, 2015 at 10:52 AM, Mario José Marques-Azevedo
<mariojmaaz at gmail.com> wrote:
> Hi Duncan and David,
>
> Thank you for explanation. I'm really disappointed with this R "resource".
> I think that partial match, mainly in function args, must be optional and
> not default. We can have many problems and lost hours find errors (it occur
> with me). I tried to find a solution to disable partial match, but it seems
> that is not possible. Program with hacks for this will be sad.
>
> Best regards!
>
> Mario
>
>
>
> On 11 December 2015 at 15:55, David Winsemius <dwinsemius at comcast.net>
> wrote:
>
>>
>> > On Dec 11, 2015, at 9:40 AM, Mario José Marques-Azevedo <
>> mariojmaaz at gmail.com> wrote:
>> >
>> > Dears,
>> >
>> > I'm having a weird behaviours when setting arguments in functions.
>> >
>> > fn <- function(x, st="mean", b=NULL, col.range="black", ...){
>> >  dots <- list(...)
>> >  cat("col.range =", col.range, "\n")
>> >  cat("dots =\n")
>> >  print(dots)
>> > }
>> >
>> > fn(1, b=2,col="red")
>> >
>> > # Output
>> > col.range = red
>>
>> Argument matching is done with `pmatch`. So "col" is a partial match to
>> "col.range".
>>
>> See ?match.arg
>>
>>
>> > dots =
>> > list()
>> >
>> > Why 'col' arguments are not in ellipses, but setting col.range to 'red'?
>> >
>> > If I change the position of ellipses
>> >
>> > fn2 <- function(x, ..., st="mean", b=NULL, col.range="black"){
>> >  dots <- list(...)
>> >  cat("col.range =", col.range, "\n")
>> >  cat("dots =\n")
>> >  print(dots)
>> > }
>> >
>> > fn2(1, b=2, col="red")
>> >
>> > # Output
>> > col.range = black
>> > dots =
>> > $col
>> > [1] "red"
>> >
>> > It works! I'm using R version 3.2.2.
>>
>> It's been that way 'forever'.
>>
>> >
>> > Best regards!
>> >
>> > Mario
>> >
>> >       [[alternative HTML version deleted]]
>> >
>> > ______________________________________________
>> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> > https://stat.ethz.ch/mailman/listinfo/r-help
>> > PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> > and provide commented, minimal, self-contained, reproducible code.
>>
>> David Winsemius
>> Alameda, CA, USA
>>
>>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list