Christoph Scherber wrote:
Dear R users,

I have spectral data (say, wavelength vs. extinction coefficient) for which I�d like to calculate an integral (i.e. the area underneath the curve).

Suppose the (artificial) dataset is

lambda     E
1     2
2     4
3     5
4     8
5     1
6     5
7     4
8     9
9     8
10     2



How can I calculate an integral  for these values using R?

Many thanks for any help!
Regards

Christoph


Hi Christoph,
You can write some code to do trapezoidal integration or use ?approx in the following manner:


f <- function(xnew, x, y) approx(x, y, xnew)$y
integrate(f, min(x$lambda), max(x$lambda), x = x$lambda, y = x$E)

where `x' is your data above. Using approx is perhaps overkill but it works. A better solution would be to use trapezoids or perhaps piecewise linear integration. I don't know of a package that has the latter approaches off the top of my head but that doesn't mean they doesn't exist somewhere.

--sundar

______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to