在带有胶水包的 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 &lt;- substitute(group)) 没有 deparse 也可以工作。我们需要deparse吗? 哦,好吧。那看来没必要了。 deparse() 在某些边缘情况下可能会返回长度 > 1 的字符向量。最好使用as_label() 来避免这个问题。 这个group_val &lt;- substitute(group)) 正是我所需要的。

以上是关于在带有胶水包的 gtsummary 中使用“modify_caption”时在表输出中显示变量名称的主要内容,如果未能解决你的问题,请参考以下文章

在使用 gtsummary 对两个分类变量上的连续变量进行汇总时,如何添加每个类别的观察数?

GOROOT中不了解go mod和包的原因

包的导入

使用胶水保存为镶木地板文件时会修改数据帧标头

在R中使用带有ff包的apply函数

使用火花而不是使用动态框架(胶水上下文)从胶水目录中读取