One function to detect NaN, NA, Inf, -Inf, etc.?
Asked Answered
A

1

49

Is there a single function in R that determines if a value is NA, NaN, Inf, -Inf, or otherwise not a well-formed number?

Alfrediaalfredo answered 22/9, 2011 at 16:30 Comment(0)
S
67

You want is.finite

> is.finite(NA)
[1] FALSE
> is.finite(NaN)
[1] FALSE
> is.finite(Inf)
[1] FALSE
> is.finite(1L)
[1] TRUE
> is.finite(1.0)
[1] TRUE
> is.finite("A")
[1] FALSE
> is.finite(pi)
[1] TRUE
> is.finite(1+0i)
[1] TRUE
Starfish answered 22/9, 2011 at 16:36 Comment(4)
Note that is.finite(TRUE) also returns TRUE.Flagitious
@kohske: Good point. is.finite(FALSE) also returns TRUE. This is likely because TRUE and FALSE are just integers.Starfish
True and false aren't integers - but they will be coerced without error/warning messageMiscarriage
@hadley: I wasn't clear; thanks for clarifying. I was referring to R booleans being 32-bit integers at the C level, not that is.integer(TRUE) would return TRUE.Starfish

© 2022 - 2024 — McMap. All rights reserved.