# [R] Defining functions - an interesting problem

utkarshsinghal utkarsh.singhal at global-analytics.com
Wed May 27 16:11:47 CEST 2009

```I define the following function:
(Please don't wonder about the use of this function, this is just a
time in finding an alternate way of doing the same as the following does
not exactly represent my function. I am only interested in a good
explanation)

> f1 = function(x,ties.method="average")rank(x,ties.method)
> f1(c(1,1,2,4), ties.method="min")
 1.5 1.5 3.0 4.0

I don't know why it followed ties.method="average".
Anyways I randomly tried the following:

> f2 = function(x,ties.method="average")rank(x,ties.method=ties.method)
> f2(c(1,1,2,4), ties.method="min")
 1 1 3 4
Now, it follows the ties.method="min"

I don't see any explanation for this, however, I somehow mugged up that
if I define it as in "f1", the ties.method in rank function takes its
default value which is "average" and if I define as in "f2", it takes
the value which is passed in "f2".

But even all my mugging is wasted when I tested the following:

> h = function(x, a=1)x^a
> g1 = function(x, a=1)h(x,a)
> g1(x=5, a=2)
 25

> g2 = function(x, a=1)h(x,a=a)
> g2(x=5, a=2)
 25

Here in both the cases, "h" is taking the value passed through "g1", and
"g2".