Re: [R] Warning: condition has length > 1

From: Roger Bivand <Roger.Bivand_at_nhh.no>
Date: Sat 08 Oct 2005 - 23:24:56 EST


On Sat, 8 Oct 2005, nawaf b wrote:

> Hi -
>
> I was wondering if anyone came across a problem such as mine! I was trying
> to create a user-defined function, however, the results from calling the
> function are unexpected!
>
> When passing X parameter as a single value variable (x<-c(3)), everything
> works fine. However, when passing a parameter as a vector with multiple
> values (as the case in my code), the 'if condition' is only executed once!
>
> Here is my code:
> > x
> [1] 0.3 1.0 0.7 22.0
> > myfunction<-function(x)
> + {
> + if (x>=1) 0
> + else x^2
> + }
> > myfunction(x)
> [1] 0.09 1.00 0.49 484.00
> Warning message:
> the condition has length > 1 and only the first element will be used in: if
> (x >= 1) 0 else x^2
> >
>
> Is there a way to overcome this issue? Can you please explain what
> modifications to the code I need to accommodate to make it work.

> myfunction<-function(x)
+ ifelse(x>=1, 0, x^2)
> x <- c(0.3, 1.0, 0.7, 22.0)
> myfunction(x)

[1] 0.09 0.00 0.49 0.00

ifelse() is vectorised, but if() only looks at the first element in x before deciding what to do - so if the condition is longer, the rest gets ignored.

>
> Thanks,
>
> Nawaf
>
> ______________________________________________
> R-help@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
>

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand@nhh.no

______________________________________________
R-help@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
Received on Sat Oct 08 23:36:15 2005

This archive was generated by hypermail 2.1.8 : Sun 23 Oct 2005 - 18:32:13 EST