is.finite {base}R Documentation

Finite, Infinite and NaN Numbers

Description

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.)

Usage

is.finite(x)
is.infinite(x)
Inf
NaN
is.nan(x)

Arguments

x (numerical) object to be tested.

Details

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).

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.

Note

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.

References

ANSI/IEEE 754 Floating-Point Standard.

This link does not work any more (2003/12) Currently (6/2002), Bill Metzenthen's billm@suburbia.net tutorial and examples at
http://www.suburbia.net/~billm/

See Also

NA, ‘Not Available’ which is not a number as well, however usually used for missing values and applies to many modes, not just numeric.

Examples

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)

[Package base version 2.1.0 Index]