bai.in <- function(rwl, d2pith = NULL) {
if(!is.data.frame(rwl))
stop("'rwl' must be a data.frame")
if(!is.null(d2pith)) {
if(ncol(rwl) != nrow(d2pith))
stop("dimension problem: ", "'ncol(rw)' != 'nrow(d2pith)'")
if(!all(d2pith[, 1] == names(rwl))){
print(data.frame(rwlNames=names(rwl),seriesID=d2pith[,1],test=d2pith[, 1] == names(rwl)))
stop("series ids in 'd2pith' and 'rwl' do not match exactly.")
}
if(!is.data.frame(d2pith)){
stop("'d2pith' must be a data.frame")
}
d2pith.vec <- d2pith[, 2]
} else {
## distance offset if not given
d2pith.vec <- rep(0, ncol(rwl))
}
out <- rwl
## vector of years
n.vec <- seq_len(nrow(rwl))
for(i in seq_len(ncol(rwl))){
## series to work with
dat <- rwl[[i]]
## strip out data from NA
dat2 <- na.omit(dat)
## get ring area
bai <- pi*dat2*(dat2+2*(cumsum(dat2) + d2pith.vec[i] - dat2))
## find NA / not NA locations
na <- attributes(dat2)$na.action
no.na <- n.vec[!n.vec %in% na]
## write result
out[no.na, i] <- bai
}
## return result
out
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.