| is.finite {base} | R Documentation |
is.finite and is.infinite return a vector of the same
length as x, indicating which elements are finite (not infinite
and not missing).
Inf and -Inf are positive and negative “infinity”
whereas NaN means “Not a Number”. (These apply to numeric
values and real and imaginary parts of complex values but not to
values of integer vectors.)
is.finite(x) is.infinite(x) Inf NaN is.nan(x)
x |
(numerical) object to be tested. |
is.finite returns a vector of the same length as x the
jth element of which is TRUE if x[j] is finite (i.e., it
is not one of the values NA, NaN, Inf or
-Inf). All elements of types other than logical, integer,
numeric and complex vectors are false. Complex numbers are finite if
both the real and imaginary parts are.
is.infinite returns a vector of the same length as x
the jth element of which is TRUE if x[j] is
infinite (i.e., equal to one of Inf or -Inf). This will
be false unless x is numeric or complex. Complex numbers are
infinite if either the real and imaginary part is.
is.nan tests if a numeric value is NaN. Do not test
equality to NaN, or even use identical,
since systems typically have many different NaN values.
In most ports of R one of these is used for the numeric missing
value NA. It is generic: you can write methods to handle
specific classes of objects, see InternalMethods.
In R, basically all mathematical functions (including basic
Arithmetic), are supposed to work properly with
+/- Inf and NaN as input or output.
The basic rule should be that calls and relations with Infs
really are statements with a proper mathematical limit.
The IEC 60559 standard, also know as the ANSI/IEEE 754 Floating-Point Standard.
D. Goldberg (1991) What Every Computer Scientist Should Know
about Floating-Point Arithmetic ACM Computing Surveys, 23(1).
Postscript version available at
http://www.validlab.com/goldberg/paper.ps
Extended PDF version at http://www.validlab.com/goldberg/paper.pdf
http://grouper.ieee.org/groups/754/ for accessible information.
The C99 function isfinite is used for is.finite if available.
NA, ‘Not Available’ which is not a number
as well, however usually used for missing values and applies to many
modes, not just numeric.
pi / 0 ## = Inf a non-zero number divided by zero creates infinity
0 / 0 ## = NaN
1/0 + 1/0# Inf
1/0 - 1/0# NaN
stopifnot(
1/0 == Inf,
1/Inf == 0
)
sin(Inf)
cos(Inf)
tan(Inf)