在带有胶水包的 gtsummary 中使用“modify_caption”时在表输出中显示变量名称
Posted
技术标签:
【中文标题】在带有胶水包的 gtsummary 中使用“modify_caption”时在表输出中显示变量名称【英文标题】:Showing variable name in table output when using `modify_caption` in gtsummary with glue packages在带有胶水包的 gtsummary 中使用“modify_caption”时在表输出中显示变量名称
【发布时间】:2021-12-06 04:32:12
【相关技术】:@tags@
【问题描述】:
我想编写一个使用dplyr::select()
、gtsummary::tbl_summary()
和glue::glue()
的代码。
计划是:
从数据框中选择一些变量(例如:所有数值变量) 返回基于分组变量(因子变量)的表格摘要 在表格中,标题应显示分组变量我将使用 gapminder 数据集来演示错误。
预期的表格是
下面,我演示一下我做了什么
首先,我加载库
library(tidyverse)
library(glue)
library(gapminder)
library(gtsummary)
然后写我的函数
describe_grp <- function(data, group)
data %>%
tbl_summary(by = group) %>% add_p() %>%
modify_caption(glue::glue("Detection For **group**")) %>%
bold_labels()
但我需要使用'continent'
(参见下面的代码)。它就像我想要的那样工作。
gapminder %>%
select(is.integer, is.double, continent) %>%
describe_grp(group = 'continent')
但是,我的首选是不使用连字符,即使用 describe_grp(group = continent)
。
所以我认为我可以使用
enquo()
或
curly curly
但是,两者都不起作用。我猜这与modify_caption()
中的glue::glue()
函数有关
查看以下不起作用的代码:
#using enquo
describe_grp2 <- function(data, group)
egroup <- enquo(group)
data %>%
tbl_summary(by = !!egroup) %>% add_p() %>%
modify_caption(glue::glue("Detection For (!!egroup)")) %>%
bold_labels()
gapminder %>%
select(is.integer, is.double, continent) %>%
describe_grp2(group = continent)
这些代码也不起作用
#using curly curly
describe_grp3 <- function(data, group)
data %>%
tbl_summary(by = group) %>% add_p() %>%
modify_caption(glue::glue("Detection For **group**")) %>%
bold_labels()
gapminder %>%
select(is.integer, is.double, continent) %>%
describe_grp3(group = continent)
【问题讨论】:
【参考方案1】:
你可以使用 -
describe_grp <- function(data, group)
group_val <- deparse(substitute(group))
data %>%
tbl_summary(by = group) %>% add_p() %>%
modify_caption(glue::glue("Detection For **group_val**")) %>%
bold_labels()
gapminder %>%
select(is.integer, is.double, continent) %>%
describe_grp(group = continent)
【讨论】:
group_val <- substitute(group))
没有 deparse 也可以工作。我们需要deparse
吗?
哦,好吧。那看来没必要了。
deparse()
在某些边缘情况下可能会返回长度 > 1 的字符向量。最好使用as_label()
来避免这个问题。
这个group_val <- substitute(group))
正是我所需要的。以上是关于在带有胶水包的 gtsummary 中使用“modify_caption”时在表输出中显示变量名称的主要内容,如果未能解决你的问题,请参考以下文章