Skip to content

Commit cbf4c62

Browse files
committed
modelsummary's coef_rename doens't work with logical variables
Fixes #1239
1 parent 4db2836 commit cbf4c62

4 files changed

Lines changed: 36 additions & 6 deletions

File tree

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Type: Package
22
Package: parameters
33
Title: Processing of Model Parameters
4-
Version: 0.29.2
4+
Version: 0.29.2.1
55
Authors@R:
66
c(person(given = "Daniel",
77
family = "Lüdecke",

R/format_parameters.R

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,11 @@ format_parameters.parameters_model <- function(model, ...) {
242242
name <- .format_factor(name = name, variable = variable, brackets = brackets)
243243
}
244244

245+
# Logical
246+
if (type == "logical") {
247+
name <- .format_logical(name = name, brackets = brackets)
248+
}
249+
245250
# Polynomials
246251
if (type %in% c("poly", "poly_raw")) {
247252
name <- .format_poly(
@@ -394,6 +399,12 @@ format_parameters.parameters_model <- function(model, ...) {
394399
}
395400

396401

402+
#' @keywords internal
403+
.format_logical <- function(name, brackets = c("[", "]")) {
404+
paste0(name, " ", brackets[1], "TRUE", brackets[2])
405+
}
406+
407+
397408
#' @keywords internal
398409
.format_log <- function(name, variable, type, brackets = c("[", "]")) {
399410
paste0(variable, " ", brackets[1], gsub("(.*)\\((.*)\\)", "\\1", name), brackets[2])
@@ -463,7 +474,7 @@ format_parameters.parameters_model <- function(model, ...) {
463474
factor_terms
464475
)
465476
for (k in seq_along(factor_terms)) {
466-
ft <- factor_terms[k] # e.g. "factor(cyl)"
477+
ft <- factor_terms[k] # e.g. "factor(cyl)"
467478
orig <- cleaned_terms[k] # e.g. "cyl"
468479
if (orig %in% colnames(mf) && !ft %in% colnames(mf)) {
469480
orig_label <- attr(mf[[orig]], "label", exact = TRUE)

R/parameters_type.R

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,10 @@ parameters_type <- function(model, ...) {
215215
} else if (cleaned_name %in% reference$numeric) {
216216
return(c("numeric", "Association", name, name, NA, NA))
217217

218+
# Logicals
219+
} else if (cleaned_name %in% reference$logical) {
220+
return(c("logical", "Difference", name, cleaned_name, "TRUE", NA))
221+
218222
# Ordered factors
219223
} else if (is.ordered(data[[cleaned_ordered_name]])) {
220224
fac <- reference$levels_parent[match(cleaned_name, reference$levels)]
@@ -427,5 +431,8 @@ parameters_type <- function(model, ...) {
427431
out$levels <- out$levels[!is.na(out$levels)]
428432
out$levels_parent <- out$levels_parent[!is.na(out$levels_parent)]
429433

434+
# Logical
435+
out$logical <- names(data[vapply(data, is.logical, TRUE)])
436+
430437
out
431438
}

R/utils_cleaners.R

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,19 @@
1111
# remove them here and clean/prepare them in ".parameters_type_basic()".
1212
# for formatting / printing, refer to ".format_parameter()".
1313

14+
# fmt: skip
1415
pattern <- if (full) {
1516
c(
16-
"as.factor", "as.numeric", "as.ordered", "factor", "ordered", "offset",
17-
"lag", "diff", "catg", "matrx", "pol", "strata", "strat", "scale",
17+
"as.factor", "as.numeric", "as.ordered", "as.logical", "factor", "ordered",
18+
"offset", "lag", "diff", "catg", "matrx", "pol", "strata", "strat", "scale",
1819
"scored", "interaction", "lsp", "pb", "lo", "t2", "te", "ti", "tt", "mi",
1920
"mo", "gp"
2021
)
2122
} else {
22-
c("as.factor", "as.numeric", "as.ordered", "factor", "ordered", "catg", "interaction")
23+
c(
24+
"as.factor", "as.numeric", "as.ordered", "as.logical", "factor", "ordered",
25+
"catg", "interaction"
26+
)
2327
}
2428

2529
for (j in seq_along(pattern)) {
@@ -31,13 +35,21 @@
3135
x <- insight::trim_ws(sub("offset\\(([^-+ )]*)\\)(.*)", "\\1\\2", x))
3236
# some exceptions here...
3337
} else if (full && pattern[j] == "scale" && any(grepl("scale(", x, fixed = TRUE))) {
34-
x[grepl("scale(", x, fixed = TRUE)] <- insight::clean_names(grep("scale(", x, fixed = TRUE, value = TRUE))
38+
x[grepl("scale(", x, fixed = TRUE)] <- insight::clean_names(grep(
39+
"scale(",
40+
x,
41+
fixed = TRUE,
42+
value = TRUE
43+
))
3544
} else if (any(grepl(pattern[j], x, fixed = TRUE))) {
3645
p <- paste0(pattern[j], "\\(((\\w|\\.)*)\\)(.*)")
3746
x <- insight::trim_ws(sub(p, "\\1\\3", x))
3847
}
3948
}
4049

50+
# for logicals
51+
x <- gsub("TRUE$", "", x)
52+
4153
gsub("`", "", x, fixed = TRUE)
4254
}
4355

0 commit comments

Comments
 (0)