如何在 gt_regression() 输出的 table 的标签中放置换行符并由 LaTeX 输出?
How to put line breaks in the labels of the table output by gt_regression() and output it by LaTeX?
根据the documentation of the gtsummay package,您可以在add_significance_stars()
中使用<br>
来打破table的标签显示[=30=中回归模型的结果],但它不适用于 LaTeX。
我试过\n
等其他换行方式,还是不行。如何在 LaTeX 中换行?
这是 HTML 中的示例。
df <-
mtcars %>%
lm(mpg ~ ., data = .)
df %>%
tbl_regression() %>%
add_significance_stars(
hide_se = TRUE,
pattern = "{estimate}{stars}<br>({std.error})"
) %>%
modify_header(estimate ~ "OLS<br>result")
这是一个 LaTeX 示例。
df %>%
tbl_regression() %>%
add_significance_stars(
hide_se = TRUE,
pattern = "{estimate}{stars}<br>({std.error})"
) %>%
modify_header(estimate ~ "OLS<br>result") %>%
as_kable_extra(
format = "latex",
booktabs = TRUE
)
我根据答案创建了一个table,但是我发现这个方法在使用tbl_merge()
时导致布局被破坏。
我再展示一下问题代码
# make nested dataframe
nest_df <-
mtcars %>%
tibble() %>%
group_nest(vs)
# make function
mod_fun <- function(df){lm(mpg ~ ., data = df)}
# map function
nest_df <-
nest_df %>%
mutate(model = map(data, mod_fun))
# make table
nest_df <-
nest_df %>%
mutate(
tbl = map(
.x = model,
~ tbl_regression(
.x,
) %>%
add_significance_stars(
hide_se = TRUE,
pattern = "{estimate}{stars}\\&({std.error})"
) %>%
modify_header(estimate ~ "OLS\\&result")
)
)
# merge table
nest_df_m <-
tbl_merge(
tbls = nest_df$tbl,
tab_spanner = c("type1", "type2")
)
# output merged table
nest_df_m %>%
as_kable_extra(
format = "latex",
booktabs = TRUE,
escape = FALSE
) %>%
kable_styling(position = "center")
也许这符合您的需要。你可以换行
- 添加
\\
(在乳胶代码中给出\
),
- 添加一个
&
将 std.error
放在与估计值相同的列中,
- 在
as_kable_extra
中设置 escape=FALSE
。
df %>%
tbl_regression() %>%
add_significance_stars(
hide_se = TRUE,
pattern = "{estimate}{stars}\\&({std.error})"
) %>%
modify_header(estimate ~ "OLS\\&result") %>%
as_kable_extra(
format = "latex",
booktabs = TRUE,
escape = FALSE
)
根据the documentation of the gtsummay package,您可以在add_significance_stars()
中使用<br>
来打破table的标签显示[=30=中回归模型的结果],但它不适用于 LaTeX。
我试过\n
等其他换行方式,还是不行。如何在 LaTeX 中换行?
这是 HTML 中的示例。
df <-
mtcars %>%
lm(mpg ~ ., data = .)
df %>%
tbl_regression() %>%
add_significance_stars(
hide_se = TRUE,
pattern = "{estimate}{stars}<br>({std.error})"
) %>%
modify_header(estimate ~ "OLS<br>result")
这是一个 LaTeX 示例。
df %>%
tbl_regression() %>%
add_significance_stars(
hide_se = TRUE,
pattern = "{estimate}{stars}<br>({std.error})"
) %>%
modify_header(estimate ~ "OLS<br>result") %>%
as_kable_extra(
format = "latex",
booktabs = TRUE
)
我根据答案创建了一个table,但是我发现这个方法在使用tbl_merge()
时导致布局被破坏。
我再展示一下问题代码
# make nested dataframe
nest_df <-
mtcars %>%
tibble() %>%
group_nest(vs)
# make function
mod_fun <- function(df){lm(mpg ~ ., data = df)}
# map function
nest_df <-
nest_df %>%
mutate(model = map(data, mod_fun))
# make table
nest_df <-
nest_df %>%
mutate(
tbl = map(
.x = model,
~ tbl_regression(
.x,
) %>%
add_significance_stars(
hide_se = TRUE,
pattern = "{estimate}{stars}\\&({std.error})"
) %>%
modify_header(estimate ~ "OLS\\&result")
)
)
# merge table
nest_df_m <-
tbl_merge(
tbls = nest_df$tbl,
tab_spanner = c("type1", "type2")
)
# output merged table
nest_df_m %>%
as_kable_extra(
format = "latex",
booktabs = TRUE,
escape = FALSE
) %>%
kable_styling(position = "center")
也许这符合您的需要。你可以换行
- 添加
\\
(在乳胶代码中给出\
), - 添加一个
&
将std.error
放在与估计值相同的列中, - 在
as_kable_extra
中设置escape=FALSE
。
df %>%
tbl_regression() %>%
add_significance_stars(
hide_se = TRUE,
pattern = "{estimate}{stars}\\&({std.error})"
) %>%
modify_header(estimate ~ "OLS\\&result") %>%
as_kable_extra(
format = "latex",
booktabs = TRUE,
escape = FALSE
)