Discussion:
[R] evaluate NA to FALSE instead of NA?
Rainer M Krug
2014-10-14 09:51:17 UTC
Permalink
Hi

I want to evaluate NA and NaN to FALSE (for indexing) so I would like to
have the result as indicated here:

,----
| > p <- c(1:10/100, NA, NaN)
| > p
| [1] 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 NA NaN
| > p[p<=0.05]
| [1] 0.01 0.02 0.03 0.04 0.05 NA NA
| > p[sapply(p<=0.05, isTRUE)]
| [1] 0.01 0.02 0.03 0.04 0.05 <<<=== I want this
`----

Is there a way that I can do this more easily then in my example above?
It works, but it strikes me that there is not a better way of doing
this - am I missing a command or option?

Thanks,

Rainer
--
Rainer M. Krug
email: Rainer<at>krugs<dot>de
PGP: 0x0F52F982
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 494 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20141014/832c205b/attachment.bin>
Pascal Oettli
2014-10-14 10:00:32 UTC
Permalink
Hi Rainer,

As "complete.cases()" does?

p <- c(1:10/100, NA, NaN)
complete.cases(p)
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE

Regards,
Pascal
Post by Rainer M Krug
Hi
I want to evaluate NA and NaN to FALSE (for indexing) so I would like to
,----
| > p <- c(1:10/100, NA, NaN)
| > p
| [1] 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 NA NaN
| > p[p<=0.05]
| [1] 0.01 0.02 0.03 0.04 0.05 NA NA
| > p[sapply(p<=0.05, isTRUE)]
| [1] 0.01 0.02 0.03 0.04 0.05 <<<=== I want this
`----
Is there a way that I can do this more easily then in my example above?
It works, but it strikes me that there is not a better way of doing
this - am I missing a command or option?
Thanks,
Rainer
--
Rainer M. Krug
email: Rainer<at>krugs<dot>de
PGP: 0x0F52F982
______________________________________________
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.
--
Pascal Oettli
Project Scientist
JAMSTEC
Yokohama, Japan
Sven E. Templer
2014-10-14 10:04:08 UTC
Permalink
use:

which(p<=.05)

this will not yield logical, but integer indices without NA
Post by Rainer M Krug
Hi
I want to evaluate NA and NaN to FALSE (for indexing) so I would like to
,----
| > p <- c(1:10/100, NA, NaN)
| > p
| [1] 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 NA NaN
| > p[p<=0.05]
| [1] 0.01 0.02 0.03 0.04 0.05 NA NA
| > p[sapply(p<=0.05, isTRUE)]
| [1] 0.01 0.02 0.03 0.04 0.05 <<<=== I want this
`----
Is there a way that I can do this more easily then in my example above?
It works, but it strikes me that there is not a better way of doing
this - am I missing a command or option?
Thanks,
Rainer
--
Rainer M. Krug
email: Rainer<at>krugs<dot>de
PGP: 0x0F52F982
______________________________________________
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.
Joshua Wiley
2014-10-14 10:06:03 UTC
Permalink
Hi,

Perhaps still not as short as you want, but I normally use which():

p <- c(1:10/100, NA, NaN)
p[which(p <= .05)]
[1] 0.01 0.02 0.03 0.04 0.05

Cheers,

Josh
Post by Rainer M Krug
Hi
I want to evaluate NA and NaN to FALSE (for indexing) so I would like to
,----
| > p <- c(1:10/100, NA, NaN)
| > p
| [1] 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 NA NaN
| > p[p<=0.05]
| [1] 0.01 0.02 0.03 0.04 0.05 NA NA
| > p[sapply(p<=0.05, isTRUE)]
| [1] 0.01 0.02 0.03 0.04 0.05 <<<=== I want this
`----
Is there a way that I can do this more easily then in my example above?
It works, but it strikes me that there is not a better way of doing
this - am I missing a command or option?
Thanks,
Rainer
--
Rainer M. Krug
email: Rainer<at>krugs<dot>de
PGP: 0x0F52F982
______________________________________________
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.
--
Joshua F. Wiley
Ph.D. Student, UCLA Department of Psychology
http://joshuawiley.com/
Senior Analyst, Elkhart Group Ltd.
http://elkhartgroup.com
Office: 260.673.5518

[[alternative HTML version deleted]]
Rainer M Krug
2014-10-14 10:13:27 UTC
Permalink
Thanks Joshua and Sven - I completely forgot about which() .

Pascal - I never new about complete.cases - interesting function.

Thanks,

Rainer
Post by Rainer M Krug
Hi
I want to evaluate NA and NaN to FALSE (for indexing) so I would like to
,----
| > p <- c(1:10/100, NA, NaN)
| > p
| [1] 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 NA NaN
| > p[p<=0.05]
| [1] 0.01 0.02 0.03 0.04 0.05 NA NA
| > p[sapply(p<=0.05, isTRUE)]
| [1] 0.01 0.02 0.03 0.04 0.05 <<<=== I want this
`----
Is there a way that I can do this more easily then in my example above?
It works, but it strikes me that there is not a better way of doing
this - am I missing a command or option?
Thanks,
Rainer
--
Rainer M. Krug
email: Rainer<at>krugs<dot>de
PGP: 0x0F52F982
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 494 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20141014/7b017434/attachment.bin>
S Ellison
2014-10-14 11:41:09 UTC
Permalink
Post by Rainer M Krug
Thanks Joshua and Sven - I completely forgot about which() .
Also
na.omit(p[p<=0.05])

#and
p[p<=0.05 & !is.na(p)]

S.



*******************************************************************
This email and any attachments are confidential. Any use...{{dropped:8}}
Loading...