[R] The condition has length > 1 and only the first element willbeused

Gerrit Eichner Gerrit.Eichner at math.uni-giessen.de
Tue Aug 3 13:17:30 CEST 2010


Hello, Pablo,

if() doesn't accept a vector as its argument the way you may want it to; 
take a look at ifelse().

  Regards  --  Gerrit


On Tue, 3 Aug 2010, Pablo Cerdeira wrote:

> Hi All,
>
> I'm trying to run the following script in R, but I'm getting a warning saying:
>
> Warning message:
> In if (z < 0) { :
>  the condition has length > 1 and only the first element will be used
>
> As you can see, I'm sending a vector x to the function f without any
> problem. The function f calculates the y value for each x.
>
> But the function f needs to convert the x to positive values (the mod
> function). And when it tries to convert, it always uses the first
> value of x.
>
> What I'm doing wrong here?
>
> mod = function(x) {
>  if (x < 0) {
>    mod <- x*(-1)
>  }
>  else {
>    mod <- x
>  }
> }
> f = function(x) {
>  f <- mod(x)/x
> }
> x <- seq(-1,1,0.01)
> x
> y <- f(x)
> y
> plot(f,xlim = c(-1,1))
> remove(x,y,f,mod)
>
> best regards,
>
> -- 
> Pablo de Camargo Cerdeira
> pablo at fgv.br
> pablo.cerdeira at gmail.com
> +55 (21) 3799-6065
>
> ______________________________________________
> R-help at r-project.org 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.
>

---------------------------------------------------------------------
AOR Dr. Gerrit Eichner               Mathematical Institute, Room 212
gerrit.eichner at math.uni-giessen.de   Justus-Liebig-University Giessen
Tel: +49-(0)641-99-32104          Arndtstr. 2, 35392 Giessen, Germany
Fax: +49-(0)641-99-32109              http://www.uni-giessen.de/~gcb7



More information about the R-help mailing list