[R] Warning: condition has length > 1

Andrew Robinson A.Robinson at ms.unimelb.edu.au
Sun Oct 9 07:49:08 CEST 2005


ifelse() should work too.

Andrew

On Sun, Oct 09, 2005 at 03:30:42PM +1000, sosman wrote:
> 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 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

-- 
Andrew Robinson
Senior Lecturer in Statistics                       Tel: +61-3-8344-9763
Department of Mathematics and Statistics            Fax: +61-3-8344-4599
University of Melbourne, VIC 3010 Australia
Email: a.robinson at ms.unimelb.edu.au    Website: http://www.ms.unimelb.edu.au




More information about the R-help mailing list