R: 'Not Available' / Missing Values

NA {base} | R Documentation

## ‘Not Available’ / Missing Values

### Description

`NA` is a logical constant of length 1 which contains a missing value indicator. `NA` can be coerced to any other vector type except raw. There are also constants `NA_integer_`, `NA_real_`, `NA_complex_` and `NA_character_` of the other atomic vector types which support missing values: all of these are reserved words in the R language.

The generic function `is.na` indicates which elements are missing.

The generic function `is.na<-` sets elements to `NA`.

### Usage

    NA
    is.na(x)
    ## S3 method for class 'data.frame'
    is.na(x)

    is.na(x) <- value

### Arguments

`x` | an R object to be tested: the default method handles atomic vectors, lists and pairlists.
`value` | a suitable index vector for use with `x`.

### Details

The `NA` of character type is distinct from the string `"NA"`. Programmers who need to specify an explicit string `NA` should use `NA_character_` rather than `"NA"`, or set elements to `NA` using `is.na<-`.

`is.na(x)` works elementwise when `x` is a `list`. It is generic: you can write methods to handle specific classes of objects, see InternalMethods. A complex value is regarded as `NA` if either its real or imaginary part is `NA` or `NaN`.

Function `is.na<-` may provide a safer way to set missingness. It behaves differently for factors, for example.

Computations using `NA` will normally result in `NA`: a possible exception is where `NaN` is also involved, in which case either might result.

### Value

The default method for `is.na` applied to an atomic vector returns a logical vector of the same length as its argument `x`, containing `TRUE` for those elements marked `NA` or, for numeric or complex vectors, `NaN` (!) and `FALSE` otherwise. `dim`, `dimnames` and `names` attributes are preserved.

The default method also works for lists and pairlists: the result for an element is false unless that element is a length-one atomic vector and the single element of that vector is regarded as `NA` or `NaN`.

The method `is.na.data.frame` returns a logical matrix with the same dimensions as the data frame, and with dimnames taken from the row and column names of the data frame.

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.

### See Also

`NaN`, `is.nan`, etc., and the utility function `complete.cases`.

`na.action`, `na.omit`, `na.fail` on how methods can be tuned to deal with missing values.

### Examples

    is.na(c(1, NA))        #> FALSE  TRUE
    is.na(paste(c(1, NA))) #> FALSE FALSE

    (xx <- c(0:4))
    is.na(xx) <- c(2, 4)
    xx                     #> 0 NA  2 NA  4

[Package base version 2.15.1 Index]