[R] Odp: NA-values and logical operation

Petr PIKAL petr.pikal at precheza.cz
Wed Jan 14 09:26:21 CET 2009


Hi


Patrick Hausmann <Patrick.Hausmann at uni-bremen.de> napsal dne 13.01.2009 
18:18:38:

> Hi Petr,
> 
> works perfect, thanks a lot!
> 
> Perhaps you can take a look at this 'problem'? I want to get a
> new vector for which (x == 2 & y == 2 & z == 2) = TRUE
> (the real dataframe has 21 columns to check)
> 
> o <- data.frame(x=c(2,2,2,2,2), y=c(1,2,2,2,NA), z=c(2,NA,2,1,2))
> 
> #> o == 2
> #        x     y     z
> #[1,] TRUE FALSE  TRUE
> #[2,] TRUE  TRUE    NA
> #[3,] TRUE  TRUE  TRUE
> #[4,] TRUE  TRUE FALSE
> #[5,] TRUE    NA  TRUE
> 
> apply(o == 2 , 1, function(x) isTRUE(x))
> # [1] FALSE FALSE FALSE FALSE FALSE
> 
> At least I would expect the third index to be TRUE...

Not so. See help page for isTRUE

isTRUE(x) is an abbreviation of identical(TRUE, x), and so is true if and 
only if x is a length-one logical vector with no attributes (not even 
names). 
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

which is not your case

I would use all

> apply(o == 2 , 1, function(x) all(x))
[1] FALSE    NA  TRUE FALSE    NA


or check rowSums

> rowSums(o==2)
[1]  2 NA  3  2 NA

> rowSums(o==2, na.rm=T)
[1] 2 2 3 2 2

Depending what rows you want to have true.

Regards

Petr

> 
> Best
>   Patrick
> 
> 
> Zitat von Petr PIKAL <petr.pikal at precheza.cz>:
> 
> > Hi
> >
> >
> > r-help-bounces at r-project.org napsal dne 13.01.2009 11:58:45:
> >
> >> Dear list,
> >>
> >> as a result of a logical operation I want to assign
> >> a new variable to a DF with NA-values.
> >>
> >> z <- data.frame( x = c(5,6,5,NA,7,5,4,NA),
> >>                   y = c(1,2,2,2,2,2,2,2) )
> >>
> >> p <- (z$x <= 5) & (z$y == 1)
> >> p
> >> z[p, "p1"] <-5
> >> z
> >> # ok, this works fine
> >>
> >> z <- z[,-3]
> >>
> >> p <- (z$x <= 5) & (z$y == 2)
> >> p
> >> z[p, "p2"] <-5
> >> z
> >> # this failed... - how can I assign the value '5' to the new
> >> # var "p2"
> >
> > z[which(p), "p2"] <-5
> >
> > works.
> >
> > Regards
> > Petr
> >
> >
> >>
> >> Thanks for any help!!
> >> Patrick
> >>
> >> ______________________________________________
> >> 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.
> >
> >
> 
> 
>




More information about the R-help mailing list