[R] The condition has length > 1 and only the first element will be used

jim holtman jholtman at gmail.com
Tue Aug 3 13:16:05 CEST 2010


Look at the help page for 'if':

"A length-one logical vector that is not NA. Conditions of length
greater than one are accepted with a warning, but only the first
element is used. Other types are coerced to logical if possible,
ignoring any class."

If you want the positive value, why aren't you using 'abs'?

You might want to look at the 'ifelse' function to work with vectors.
You would do something like:

mod <- ifelse(x < 0, x * (-1), x)

You probably need to re-read the Intro to R to understand more about
vectorized operators/operations.

On Tue, Aug 3, 2010 at 7:03 AM, Pablo Cerdeira <pablo.cerdeira at gmail.com> 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.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?



More information about the R-help mailing list