# approx2: Smart linear NA interpolation In brry/berryFunctions: Function Collection Related to Plotting and Hydrology

## Description

Smart interpolation: as `approx`, approx2 fills NAs in a vector with linear interpolation, but unlike `approx`, it can handle NAs at the ends of a vector (takes the first/last value available for those). Also, approx2 returns a vector only.

## Usage

 `1` ```approx2(x, fill = NULL, n = length(x), quiet = FALSE, ...) ```

## Arguments

 `x` Vector with (numeric) values `fill` Function to fill NAs at the start or end of the vector. See Details. DEFAULT: NULL `n` Number of points to interpolate to `quiet` Logical: suppress warning for no non-NA values? DEFAULT: FALSE `...` Further arguments passed to `approx`

## Details

The function fill is used to fill missing values at the ends of the vector. It could be mean or median, for example, but must be a function that accepts `na.rm=TRUE` as an argument. The default (NULL) means to use the first (or last) observation available.

## Value

Vector with NAs replaced with interpolation (not a list, as in `approx`!)

## Author(s)

Berry Boessenkool, [email protected], July 2015

`approx`, zoo::na.locf, `ciBand` for usage example
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16``` ```approx2(c(NA,NA)) # yields a message approx2(c(NA,NA, 6, 4, 8, 9, 3, 2, 1)) # fills with first non-NA value approx2(c( 2,NA, 6, 4, 8, 9, 3, 2, 1)) # interpolates linearly approx2(c( 2, 4, 6, 4, 8, 9,NA, 2,NA)) # linear, then last non-NA at end approx2(c(NA,NA, 6, 4, 8, 9, 3, 2, 1)) approx2(c(NA,NA, 6, 4, 8, 9, 3, 2, 1), fill=median) # first median, then linear approx2(c(NA,NA, 6, 4, 8, 9, 3, 2, 1), fill=mean) approx2(c( 3, 4, 6, 4, 8, 9,NA, 2,NA)) approx2(c( 3, 4, 6, 4, 8, 9,NA, 2,NA), fill=median) approx2(c( 3, 4, 6, 4, 8, 9,NA, 2,NA), fill=mean) approx2(c(NA,NA, 6, 4, 8, 9, 3, 2, 1), n=17) approx2(c( 2,NA, 6, 4, 8, 9, 3, 2, 1), n=17) approx2(c( 2, 4, 6, 4, 8, 9,NA, 2,NA), n=17) ```