# 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 freely 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.
`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.

### Value

The default method for `is.na` returns a logical vector of the same length as its argument `x`, containing `TRUE` for those elements marked `NA` or `NaN` (!) and `FALSE` otherwise. `dim`, `dimnames` and `names` attributes are preserved.
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.6.0 Index]