mod <- glm(am ~ mpg, mtcars, family = binomial)
###################
# glance_custom #
###################
# glance_custom.glm
glance_custom.glm <- function(x) {
data.frame("test" = 1.54, "test2" = "lkkd", "test3" = as.integer(2), "test4" = TRUE)
}
# beware of testthat scoping issue
assign("glance_custom.glm", glance_custom.glm, envir = .GlobalEnv)
out <- modelsummary(mod, "data.frame")
expect_equivalent(dim(out), c(14, 4))
rm("glance_custom.glm", envir = .GlobalEnv)
# glance_custom.glm preserve order
glance_custom.glm <- function(x) {
data.frame("test5" = 1.54, "test6" = "lkkd", "test3" = as.integer(2), "test4" = TRUE)
}
# beware of testthat scoping issue
assign("glance_custom.glm", glance_custom.glm, envir = .GlobalEnv)
out <- modelsummary(mod, "data.frame")
expect_true(all(out$term[11:14] == c("test5", "test6", "test3", "test4")))
rm("glance_custom.glm", envir = .GlobalEnv)
#################
# tidy_custom #
#################
# tidy_custom.glm
# not sure why this fails on older versions
if (getRversion() < "4.0.0") exit_file("old R")
tidy_custom.glm <- function(x) {
data.frame(
term = names(stats::coef(x)),
estimate = ifelse(stats::coef(x) > 0, "+", "-")
)
}
# beware of testthat scoping issue
assign("tidy_custom.glm", tidy_custom.glm, envir = .GlobalEnv)
out <- modelsummary(mod,
output = "data.frame",
gof_omit = "",
statistic = NULL)
expect_equivalent(unname(out[["(1)"]]), c("-", "+"))
rm("tidy_custom.glm", envir = .GlobalEnv)
# tidy_custom.glm partial term names
tidy_custom.glm <- function(x) {
data.frame(
term = c("(Intercept)", "hp"),
estimate = ifelse(stats::coef(x) > 0, 4, pi)
)
}
# beware of testthat scoping issue
assign("tidy_custom.glm", tidy_custom.glm, envir = .GlobalEnv)
out <- modelsummary(mod,
output = "data.frame",
gof_omit = "",
statistic = NULL)
expect_equivalent(unname(out[["(1)"]]), c("3.142", "0.307"))
rm("tidy_custom.glm", envir = .GlobalEnv)
# tidy_custom.glm wrong term names
tidy_custom.glm <- function(x) {
data.frame(
term = c("bad2", "bad1"),
estimate = ifelse(stats::coef(x) > 0, 4, pi)
)
}
# beware of testthat scoping issue
assign("tidy_custom.glm", tidy_custom.glm, envir = .GlobalEnv)
expect_warning(modelsummary(mod,
output = "data.frame",
gof_omit = "",
statistic = NULL))
rm("tidy_custom.glm", envir = .GlobalEnv)
#################
# tidy.custom #
#################
# tidy.custom
options(modelsummary_get = "broom")
mod_custom <- mod
class(mod_custom) <- c("custom", class(mod_custom))
tidy.custom <- function(x, ...) {
data.frame(
term = c("a", "b"),
estimate = 1:2,
std.error = 2:3
)
}
glance.custom <- function(x, ...) {
data.frame("custom" = "model")
}
# beware of testthat scoping issues
assign("tidy.custom", tidy.custom, envir = .GlobalEnv)
assign("glance.custom", glance.custom, envir = .GlobalEnv)
tab <- modelsummary(mod_custom, output = "dataframe")
expect_equivalent(dim(tab), c(6, 4))
rm("tidy.custom", envir = .GlobalEnv)
rm("glance.custom", envir = .GlobalEnv)
options(modelsummary_get = "easystats")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.