Re: [R] "if" within a function

From: Petr Klasterecky <klaster_at_karlin.mff.cuni.cz>
Date: Thu, 21 Jun 2007 08:06:02 +0200

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

______________________________________________
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.
Received on Thu 21 Jun 2007 - 06:10:50 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 21 Jun 2007 - 08:32:32 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.