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

### 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 `Inf`s really are statements with a proper mathematical limit.

### References

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.

### 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.3.1 Index]