我想编写一个使用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()
- 或
{{ }}
卷曲的卷曲
但是,两者都不起作用。我猜它与glue::glue()
函数有关modify_caption()
有关不起作用的代码,请参见下文:
#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)