[R] "if" within a function

Petr Klasterecky klaster at karlin.mff.cuni.cz
Thu Jun 21 08:06:02 CEST 2007


You did not specify what your function should return and thus it returns 
the last value by default. If a!=1, the value returned is 2, however if 
a==1, the function tries to return the result of {if (a!=1) {aaa=2}}.

You can correct this easily by modifying your function like this:
aaa=function(a)
{if (a==1) {aaa=1}
if (a!=1) {aaa=2}
aaa
}

Petr

Yuchen Luo napsal(a):
> 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.
> 

-- 
Petr Klasterecky
Dept. of Probability and Statistics
Charles University in Prague
Czech Republic



More information about the R-help mailing list