| 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 character and
generic (list) vectors are false, so is.finite is only useful for
logical, integer, numeric and complex vectors. 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
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)