# [R] Bug in ifelse

Daniel Malter daniel at umd.edu
Thu Oct 9 23:50:05 CEST 2008

```I just gave up a second too early: It does not work with ifelse(...) as
ifelse(...) assigns only a singley value (the first in the vector). A
regular if(...) else ... condition works, however.

Daniel Malter wrote:
>
> Hi all, I am quite sure it's not a bug, but I am going nuts about this. I
> do
> not possibly understand why I get different results for b1 and b2 as shown
> below.
>
> x=c(183,191,192,193,195,206,207,209,210,211,212,213,214,217,218,221,222,223,
> 224,225,227,228,229,230)
>
> y=c(221,225,228,241,242)
>
> z=y[y<max(x)] ##all Ys smaller than the maximum of X
>
> a=ifelse(length(z)==0,NA,max(z)) ##assign NA if length of z is zero, take
> the max of z otherwise
>
> b1=ifelse(is.numeric(a)==T,x[x>a],x) ##if a is numeric, assign all x that
> are greater than a; otherwise assign the entire x
>
> b2=x[x>a] ## assign all x greater than a
>
>
> b1 and b2 should be equal as I see it. Anybody who can explain why they
> are
> not makes my day, especially the one who can tell me how I can get b1
> equal
> to b2 (without sacrificing the ifelse condition).
>
> Thanks much,
> Daniel
>
> -------------------------
> cuncta stricte discussurus
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help