[R] "if" within a function

Moshe Olshansky m_olshansky at yahoo.com
Thu Jun 21 07:36:34 CEST 2007


Hi Yuchen,

In R, if you do not put an explicit return statement
in the function, the value the function returns is the
value of the last statement in the function.  Unlike
VB, it does not matter whether you assign this value
to aaa (which is identical to your function name) or b
or c or x etc.
So either use an explicit return statement or make
sure that the last statement in the function produces
the right result.

--- Yuchen Luo <realityrandom at gmail.com> wrote:

> Dear Friends.
> I found a puzzling phenomenon in R when you use 'if'
> within a function:
> 
> # defining a function aaa
> aaa=function(a)
> {if (a==1) {aaa=1};
>  if (a!=1) {aaa=2}
>  }
> 
> # using the function:
> > b=20
> > bbb=aaa(b)
> > bbb
> [1] 2
> > typeof(bbb)
> [1] "double"
> >
> >
> > c=1
> > ccc=aaa(c)
> > ccc
> NULL
> > typeof(ccc)
> [1] "NULL"
> 
> It seems that only the last 'if' phrase works. Is it
> an instrinsic weakness
> of R? Is there a way to get around it? ( I use
> 'elseif' to get around this
> when there are only two cases to choose from, but
> what if there are more
> than two cases to choose from?)
> 
> Best
> Yuchen
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> 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