错误:$在gtsummary中使用srvyr和tbl_svysummary时,运算符对原子向量无效

错误:$在gtsummary中使用srvyr和tbl_svysummary时,运算符对原子向量无效,r,survey,gtsummary,R,Survey,Gtsummary,我一直在尝试使用tbl_svysummary()在gtsummary中为使用权重的调查数据创建汇总表。我正在使用srvyr包使用as\u survey\u design()创建tbl\u svy对象。同事们对这个公式没有任何问题,并且能够毫无问题地将输出编织到HTML文档中 不幸的是,每次我尝试使用tbl\u svysummary(),都会得到错误代码error:$运算符对原子向量无效。问题(通过检查回溯和大量尝试和错误)似乎是srvyr-创建的tbl\u svy对象存储数据集的x$call组件

我一直在尝试使用
tbl_svysummary()
gtsummary
中为使用权重的调查数据创建汇总表。我正在使用
srvyr
包使用
as\u survey\u design()
创建tbl\u svy对象。同事们对这个公式没有任何问题,并且能够毫无问题地将输出编织到HTML文档中

不幸的是,每次我尝试使用
tbl\u svysummary()
,都会得到错误代码
error:$运算符对原子向量无效。问题(通过检查回溯和大量尝试和错误)似乎是
srvyr
-创建的tbl\u svy对象存储数据集的
x$call
组件的方式与
survey
不同(下文将对此进行详细介绍)。即使在使用任何空的
tbl\u svysummary
命令(例如
data%>%tbl\u svysummary()
)时也会发生这种情况,但为了更好地说明,我将使用一个带格式表的示例

我能够在“准备调查数据集”部分使用
调查
srvyr
vignette()中的示例代码和数据重现问题-然后尝试将其插入
gtsummary
教程()调查数据部分的示例代码中。为了方便插入gtsummary教程代码,我在survey vs.srvyr代码中添加了
tware
变量

不用再麻烦了。。。 套餐:

library(tidyverse)
library(survey)
library(srvyr)
library(gtsummary)
以下代码:

strat_design_survey <- svydesign(~1, strata = ~stype, fpc = ~fpc,
                                 variables = ~stype + api99 + api00 + api.stu + both,
                                 weight = ~pw, data = apistrat)

strat_design_srvyr %>%
  tbl_svysummary(
    # stratify summary statistics by the "both" column
    by = both, 
    # summarize a subset of the columns
    include = c(api00, api99, both),
    # adding labels to table
    label = list(api00 ~ "API in 2000",
                 api99 ~ "API in 1999")
  ) %>%
  add_p() %>%   # comparing values by "both" column
  add_overall() %>%
  # adding spanning header
  modify_spanning_header(c("stat_1", "stat_2") ~ "**Met Both Targets**")
产生此错误:
error:$运算符对原子向量无效

通过回溯,当
tbl\u svysummary()
尝试执行此函数时,会出现错误:
all.vars(x$call$id)
。只需在控制台中键入以下内容就会出现相同的错误:
strat\u design\u srvyr$call$id
strat\u design\u srvyr$call$weights
,等等。当然,由
svydesign()
生成的tbl\u svy的等价物不会遇到相同的问题(即
strat\u design\u调查$call$weight
)。
srvyr
生成tbl\u svy的方式似乎有问题,而tbl\u svy反过来又弄乱了
tbl\u svysummary()
所需的子集设置

在任何人发表评论之前,“你为什么不直接使用
svydesign()
?”我(a)希望使用
srvyr
作为调查设计()
进行分类,因为后者似乎对我的同事有效,(b)难以获得
svydesign()
生成的tbl来处理我的实际数据和代码(由于尺寸和隐私问题,我无法分享),部分原因可能是因为它是一个相当复杂的Rmd代码的一部分,我宁愿不需要修改


最后,我已经尝试过更新、卸载和重新安装所有相关软件包,重新启动R会话,结束会话并重新启动RStudio,然后重新启动我的计算机。

Chris您好,tbl_svysummary函数是为与调查软件包一起使用而编写的。如果您想请求对使用对于srvyr软件包,我建议您在gtsummary GitHub页面上提出功能请求。感谢您的快速回复!我们将提出请求。对于任何感兴趣的人-功能请求和后续升级在这里:再次感谢Daniel和Joseph!
strat_design_srvyr <- apistrat %>%
  as_survey_design(1, strata = stype, fpc = fpc, weight = pw,
                variables = c(stype, both, starts_with("api"))) 

strat_design_srvyr %>%
  tbl_svysummary(
    # stratify summary statistics by the "both" column
    by = both, 
    # summarize a subset of the columns
    include = c(api00, api99, both),
    # adding labels to table
    label = list(api00 ~ "API in 2000",
                 api99 ~ "API in 1999")
  ) %>%
  add_p() %>%   # comparing values by "both" column
  add_overall() %>%
  # adding spanning header
  modify_spanning_header(c("stat_1", "stat_2") ~ "**Met Both Targets**")