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
