Skip to contents

Averages x values and applies a function to the corresponding y values.

Usage

resample_bin(x, y, ...)

# S4 method for class 'numeric,numeric'
resample_bin(x, y, by, f = mean, ...)

# S4 method for class 'ANY,missing'
resample_bin(x, y, by, f = sum)

Arguments

x, y

A numeric vector. If y is missing, an attempt is made to interpret x in a suitable way (see grDevices::xy.coords()).

...

Extra parameters to be passed to f.

by

An integer specifying the binning ratio (i.e. the number of points to be grouped together; see window_tumbling()).

f

A function that takes a numeric vector of intensities as argument and returns a single numeric vector. Used to estimate the local representative value in each bin (defaults to sum(); see examples).

Value

Returns a list with two components x and y.

See also

Other resampling methods: resample_down(), resample_interpolate()

Author

N. Frerebeau

Examples

## X-ray diffraction
data("XRD")

## Plot spectrum
plot(XRD, type = "l", xlab = expression(2*theta), ylab = "Count")


## Bin by 3
XRD_bin_mean <- resample_bin(XRD, by = 3, f = mean)
XRD_bin_min <- resample_bin(XRD, by = 3, f = min)

plot(XRD, type = "l", xlim = c(25, 35),
     xlab = expression(2*theta), ylab = "Count")
lines(XRD_bin_mean, type = "l", col = "red")
lines(XRD_bin_min, type = "l", col = "green")


## Downsample by 10
XRD_down <- resample_down(XRD, by = 10)

plot(XRD, type = "l", xlim = c(20, 40),
     xlab = expression(2*theta), ylab = "Count")
lines(XRD_down, type = "l", col = "red")


## Linearly interpolate
XRD_approx <- resample_interpolate(XRD, from = 20, to = 40, by = 0.02)

plot(XRD, type = "l", xlim = c(20, 40),
     xlab = expression(2*theta), ylab = "Count")
lines(XRD_approx, type = "l", col = "red")