在 huxtable::huxreg() 中使用自定义的 glance 方法
Using a custom `glance` method in huxtable::huxreg()
我正在寻找一种方法来使用 huxtable::huxreg
报告组数和观察数,以创建 table 预测的多级模型结果 lmer()
。我可以编写一个自定义的 glance 方法来覆盖 broom.mixed
包中的 glance.merMod
方法,该方法在从 R 调用时有效,但在调用 huxreg()
.
时无效
我认为问题在于 huxreg 函数将 broom
和 broom.mixed
作为必需的命名空间导入 inside the function.
使用自定义 glance 方法(或除了简单地向现有 huxtables 添加行之外的替代方法)克服此问题的最佳方法是什么?
这是一个 MWE
library(lme4)
library(tibble)
library(huxtable)
library(broom.mixed)
## Simulate multilevel data
sigma <- 0.5
tau <- 0.1
x <- rnorm(100)
w <- rep(rnorm(10), each=10); i <- factor(rep(1:10, each=10))
y <- x + w + rep(rnorm(10, 0, tau), each = 10) + rnorm(100, 0, sigma)
d <- tibble(y, x, w)
m <- lmer(y ~ x + w + (1|i), data=d)
## Custom glance method
glance.merMod <- function(x, ret=tibble::tibble_row()) {
ret$nobs <- nobs(x)
ret$ngrps <- summary(x)$ngrps
return(ret)
}
glance(m) ## Works, returns nobs and ngrps
huxreg(m, statistics = c("nobs", "ngrps")) ## Doesn't work, ngrps missing
您可以使用 tidy_override()
解决此问题:
m2 <- tidy_override(m,
glance = list(
ngrps = summary(m)$ngrps
),
extend = TRUE
)
huxreg(m2, statistics = c("nobs", "ngrps"))
─────────────────────────────────────────────────
(1)
─────────────────────────
(Intercept) 0.027
(0.064)
x 0.916
(0.063)
w 0.982
(0.075)
sd__(Intercept) 0.096
(NA)
sd__Observation 0.561
(NA)
─────────────────────────
nobs 100
ngrps 10.000
─────────────────────────────────────────────────
*** p < 0.001; ** p < 0.01; * p < 0.05.
您可能还想在 ngrps
单元格上调用 set_number_format
。
我正在寻找一种方法来使用 huxtable::huxreg
报告组数和观察数,以创建 table 预测的多级模型结果 lmer()
。我可以编写一个自定义的 glance 方法来覆盖 broom.mixed
包中的 glance.merMod
方法,该方法在从 R 调用时有效,但在调用 huxreg()
.
我认为问题在于 huxreg 函数将 broom
和 broom.mixed
作为必需的命名空间导入 inside the function.
使用自定义 glance 方法(或除了简单地向现有 huxtables 添加行之外的替代方法)克服此问题的最佳方法是什么?
这是一个 MWE
library(lme4)
library(tibble)
library(huxtable)
library(broom.mixed)
## Simulate multilevel data
sigma <- 0.5
tau <- 0.1
x <- rnorm(100)
w <- rep(rnorm(10), each=10); i <- factor(rep(1:10, each=10))
y <- x + w + rep(rnorm(10, 0, tau), each = 10) + rnorm(100, 0, sigma)
d <- tibble(y, x, w)
m <- lmer(y ~ x + w + (1|i), data=d)
## Custom glance method
glance.merMod <- function(x, ret=tibble::tibble_row()) {
ret$nobs <- nobs(x)
ret$ngrps <- summary(x)$ngrps
return(ret)
}
glance(m) ## Works, returns nobs and ngrps
huxreg(m, statistics = c("nobs", "ngrps")) ## Doesn't work, ngrps missing
您可以使用 tidy_override()
解决此问题:
m2 <- tidy_override(m,
glance = list(
ngrps = summary(m)$ngrps
),
extend = TRUE
)
huxreg(m2, statistics = c("nobs", "ngrps"))
─────────────────────────────────────────────────
(1)
─────────────────────────
(Intercept) 0.027
(0.064)
x 0.916
(0.063)
w 0.982
(0.075)
sd__(Intercept) 0.096
(NA)
sd__Observation 0.561
(NA)
─────────────────────────
nobs 100
ngrps 10.000
─────────────────────────────────────────────────
*** p < 0.001; ** p < 0.01; * p < 0.05.
您可能还想在 ngrps
单元格上调用 set_number_format
。