Ok thanks, but I have found the solution: "ifelse". Here goes a working version of the code:
mod = function(x) { ifelse(x < 0,x*(-1),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 On Tue, Aug 3, 2010 at 8:03 AM, Pablo Cerdeira <pablo.cerde...@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 > pa...@fgv.br > pablo.cerde...@gmail.com > +55 (21) 3799-6065 > -- Pablo de Camargo Cerdeira pa...@fgv.br pablo.cerde...@gmail.com +55 (21) 3799-6065 ______________________________________________ R-help@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.