tests/testthat/test-stat-center.r

# toy elongated data set
t <- seq(6)/6 * 2*pi
m <- cbind(cos(t), sin(t))
d <- as.data.frame( m %*% matrix(c(1,1.25,1.75,1), nrow = 2) )
names(d) <- c("x", "y")
p <- ggplot(d, aes(x, y))
p1 <- p + stat_center(fun.data = mean_se)

test_that("`stat_center()` correctly handles anonymous functions", {
  p2 <- p + stat_center(fun.data = \(z) {
    zest <- mean(z)
    zse <- sqrt(var(z) / length(z))
    data.frame(y = zest, ymin = zest - zse, ymax = zest + zse)
  })
  expect_equal(layer_data(p1), layer_data(p2))
})

test_that("`fun.ord` generalizes `fun.data`", {
  p3 <- p + stat_center(fun.ord = \(z) {
    zest <- apply(z, 2L, mean)
    zse <- sqrt( apply(z, 2L, var) / nrow(z) )
    zmin <- zest - zse; zmax <- zest + zse
    names(zmin) <- paste0(names(zmin), "min")
    names(zmax) <- paste0(names(zmax), "max")
    c(zest, zmin, zmax)
  })
  expect_equal(layer_data(p1)[names(layer_data(p3))], layer_data(p3))
})
corybrunson/ordr documentation built on Feb. 24, 2025, 6:34 a.m.