#### Overview of this book

R Data Visualization Cookbook
Credits
www.PacktPub.com
Preface
Free Chapter
A Simple Guide to R
Maps
The Pie Chart and Its Alternatives
Data in Higher Dimensions
Visualizing Text and XKCD-style Plots
Creating Applications in R
Index

## Special values in R

R comes with some special values. Some of the special values in R are NA, Inf, -Inf, and NaN.

### How to do it…

The missing values are represented in R by NA. When we download data, it may have missing data and this is represented in R by NA:

`z = c( 1,2,3, NA,5,NA) # NA in R is missing Data`

To detect missing values, we can use the `install.packages()` function or `is.na()`, as shown:

````complete.cases(z) # function to detect NA`
`is.na(z) # function to detect NA`
```

To remove the NA values from our data, we can type the following in our active R session console window:

```clean <- complete.cases(z)
z[clean] # used to remove NA from data```

Please note the use of square brackets (`[` `]`) instead of parentheses.

In R, not a number is abbreviated as NaN. The following lines will generate NaN values:

```##NaN
0/0
m <- c(2/3,3/3,0/0)
m```

The `is.finite`, `is.infinite`, or `is.nan` functions will generate logical values (`TRUE` or `FALSE`).

```is.finite(m)
is.infinite(m)
is.nan(m)```

The following line will generate `inf` as a special value in R:

```## infinite
k = 1/0```

### Tip

`complete.cases(z)` is a logical vector indicating complete cases that have no missing value (NA). On the other hand, `is.na(z)` indicates which elements are missing. In both cases, the argument is our data, a vector, or a matrix.
R also allows its users to check if any element in a matrix or a vector is NA by using the `anyNA()` function. We can coerce or assign NA to any element of a vector using the square brackets ([ ]). The `[3]` input instructs R to assign NA to the third element of the `dk` vector.