test_that("thicknessOf works", {
data("jacobs2000")
## method="cumulative"
# cumulative thickness of horizon designations matching "A|B"
x1 <- thicknessOf(jacobs2000, "A|B", prefix = "AorB_")
expect_equal(nrow(x1), length(jacobs2000))
expect_equal(x1$AorB_thickness, c(131, 117, 136, 20, 54, 110, 43))
## method="minmax"
# maximum bottom depth minus minimum top depth of horizon designations matching "A|B"
x2 <- thicknessOf(jacobs2000, "A|B", method = "minmax", prefix = "AorB_")
expect_equal(ncol(x2), 4)
expect_equal(x2$AorB_top, rep(0, nrow(x2)))
expect_equal(x2$AorB_thickness, c(156, 145, 175, 20, 135, 168, 140))
expect_true(all(x2$AorB_thickness >= x1$AorB_thickness))
## custom logical function
# calculate cumulative thickness of horizons containing >18% clay
x3 <- thicknessOf(jacobs2000, FUN = function(x, ...) !is.na(x[["clay"]]) & x[["clay"]] > 18)
expect_equal(x3$thickness, c(170, 167, 81, 0, 0, 49, 0))
## missing property and or depth data
# function without NA handling, and na.rm=FALSE
x4 <- thicknessOf(jacobs2000, FUN = function(x, ...) x[["clay"]] > 18)
expect_equal(x4$thickness, c(170, 167, 81, 0, NA_integer_, 49, 0))
# function without NA handling, and na.rm=TRUE
x5 <- thicknessOf(jacobs2000, FUN = function(x, ...) x[["clay"]] > 18, na.rm = TRUE)
expect_equal(x5$thickness, c(170, 167, 81, 0, 0, 49, 0))
# missing horizon depths, and na.rm=FALSE
jacobs2000@horizons$top[1] <- NA_integer_
x6 <- thicknessOf(jacobs2000, "A|B")
expect_equal(x6$thickness, c(NA_integer_, 117, 136, 20, 54, 110, 43))
# missing horizond depths, and na.rm = TRUE
x7 <- thicknessOf(jacobs2000, "A|B", na.rm = TRUE)
expect_equal(x7$thickness, c(113, 117, 136, 20, 54, 110, 43))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.