Hi > x <- seq(0,1,.01) > y <- ifelse(abs(x-.5)<=0.3,0, + ifelse(abs(w-.5)>=0.4,-1, + ifelse((0.1<w && w<0.2),10*x-2,-10*x+8))) Error in storage.mode(test) <- "logical" : object "w" not found
what is w? Why did you use &&? & and && indicate logical AND and | and || indicate logical OR. The shorter form performs elementwise comparisons in much the same way as arithmetic operators. The longer form evaluates left to right examining only the first element of each vector. Evaluation proceeds only until the result is determined. The longer form is appropriate for programming control-flow and typically preferred in if clauses. If I changed w to x and && to & I got > y <- ifelse(abs(x-.5)<=0.3,0, + ifelse(abs(x-.5)>=0.4,-1, + ifelse((0.1<x & x<0.2),10*x-2,-10*x+8))) > > y [1] -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 [31] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Is this what you wanted? Regards Petr r-help-boun...@r-project.org napsal dne 14.02.2009 06:08:25: > > Dear R users, > > >From the code below, I try to compute "y" value. (In fact, y looks like a > trapezoid) > > ------------------------------------------------------------------ > > x <- seq(0,1,.01) > y <- ifelse(abs(x-.5)<=0.3,0, > ifelse(abs(w-.5)>=0.4,-1, > ifelse((0.1<w && w<0.2),10*x-2,-10*x+8))) > > ------------------------------------------------------------------ > > So, results are... > > ------------------------------------------------------------------ > > x > [1] 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 > 0.14 > [16] 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 > 0.29 > [31] 0.30 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.40 0.41 0.42 0.43 > 0.44 > [46] 0.45 0.46 0.47 0.48 0.49 0.50 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 > 0.59 > [61] 0.60 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.70 0.71 0.72 0.73 > 0.74 > [76] 0.75 0.76 0.77 0.78 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 > 0.89 > [91] 0.90 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00 > > > y > [1] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 8 8 8 8 8 8 8 8 0 0 0 > 0 0 > [26] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 > 0 0 > [51] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 > 0 0 > [76] 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 -1 -1 -1 -1 -1 -1 -1 -1 > -1 -1 > [101] -1 > > > > ------------------------------------------------------------------ > > However, even though the results show that y=8 for x=0.11, when x=0.11, > actual y value is -0.9. And, y=-0.8 for x=0.88. I cannot understand the > above results. > > Any comments will be greatly appreciated. > > Kathryn Lord > -- > View this message in context: http://www.nabble.com/several-%22ifelse%22- > problems...-tp22009321p22009321.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. ______________________________________________ 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.