[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