[R] a strange behavior with ifelse

Jim Lemon jim at bitwrit.com.au
Sat Apr 9 11:50:21 CEST 2011


On 04/09/2011 03:56 AM, wgu wrote:
> I have used R for years but run into a seemingly simple problem involving 'ifelse'.  condensed code like this
>
>   a=c(2,NA,NA,NA,2,2,NA,2,NA,2)
>   b=c(NA,1,1,NA,2,2,2,2,2,2)
>
> #I want to combined a and b into c so that c would be a valid number either a or b is not missing
>
> c=ifelse(a==1|b==1,1,ifelse(a==2|b==2,2,NA))
> cbind(a,b,c)
>
>            a  b  c
>   [1,]  2 NA NA
>   [2,] NA  1  1
>   [3,] NA  1  1
>   [4,] NA NA NA
>   [5,]  2  2  2
>   [6,]  2  2  2
>   [7,] NA  2 NA
>   [8,]  2  2  2
>   [9,] NA  2 NA
> [10,]  2  2  2
>
> look at rows 1, 7 and 9, c supposes to be 2 but got NA instead. seemingly, the second 'ifelse' doesn't perform as it supposes.
>
> my R version is 2.12.2
>
> any suggestion

Hi wgu,

c<-ifelse(is.na(a),b,a)

Jim



More information about the R-help mailing list