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

From: sosman <sourceforge_at_metrak.com>
Date: Sun 09 Oct 2005 - 15:30:42 EST

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.

I am going to go out on a limb here (I don't know much about R) but I'm not sure it has anything to do with that fact that you have defined a function.

It seems to me that "if (x > 1) {...}" expects a scalar and if x is not a scalar, it will use the first value. To apply your function to each element, check out the help for sapply (eg ?sapply). I am guessing the solution is something like sapply(x, myfunction) but don't quote me.

paul sorenson



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 Sun Oct 09 15:36:31 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:40:40 EST