I know that for a list, partial matching is done when indexing using the basic operators $ and [[. For example:

ll <- list(yy=1)
ll$y
[1] 1

But I am still an R newbie and this is new for me, partial matching of function arguments:

h <- function(xx=2)xx
h(x=2)
[1] 2

I want to understand how this works. What is the mechanism behind it? Does this have any side effects? I want understand how can someone test if the xx argument was given?

Edit after Andrie comment:

Internally R uses pmatch algorithm to match argument, here an example how this works:

 pmatch("me",   c("mean", "median", "mode")) # error multiple partial matches
[1] NA
> pmatch("mo",   c("mean", "median", "mode")) # mo match mode match here
[1] 3

But why R has such feature? What is the basic idea behind of partial unique matching?

Edit
Report