关于函数内部 tbl_uvregression 函数中 Y 参数的问题
Posted
技术标签:
【中文标题】关于函数内部 tbl_uvregression 函数中 Y 参数的问题【英文标题】:Issue concerning the Y parameter in tbl_uvregression function inside a function 【发布时间】:2021-12-24 14:59:50 【问题描述】:所以我试图通过自定义函数输入 tbl_uvregression 函数(gt_summary 包)的 Y 参数。这个想法是在我的函数中创建多个 tbl 并返回合并的不同表。
这是我正在使用的代码示例:
#Loading libraries + example dataset from questionr package
library(haven)
library(tidyverse)
library(finalfit)
library(dplyr)
library(survey)
library(srvyr)
library(gtsummary)
library(glue)
library(gt)
library(knitr)
library(questionr)
data(hdv2003)
这是我有问题的部分:
reg_log <- function(dataframew, variables, by)
#@param1 : weighted dataframe
#@param2 : vector containing variables we want in our graph
#@param3 : the variable or column we want as our Y argument
Table <- tbl_uvregression(data = dataframew, include = variables, exponentiate = TRUE, method.args = list(family = quasibinomial()), y = by, method = survey::svyglm)
return(Table)
当我在 reg_log 之外运行此函数时,我没有问题,但似乎在函数内部, tbl_uvregression 的 Y 参数不会评估参数,而是按字面意思阅读。这是我调用函数时遇到的错误:
hdv2003w <- svydesign(ids = ~1, data = hdv2003, weights = ~hdv2003$poids) #setting the survey.design object
reg_log(hdv2003w, c("age", "sexe", "hard.rock", "sport"), "sport")
x 构建模型时出错
survey::svyglm(formula = by ~ age, design = ., family = quasibinomial())
请参阅下面的错误。错误:mutate()
列model
有问题。 我model = map(...)
。 x svyglm.survey.design 中的错误(公式 = 按 ~ 年龄,设计 = 结构(列表(:所有变量必须在设计 = 参数中)
我知道 Y 参数需要不带引号的语法,但即使我使用了替代()函数,它也不起作用。我已经下定决心要使用 switch 功能做出几种可能性,但是如果有人知道如何解决这个问题,那就太棒了。
谢谢。
【问题讨论】:
【参考方案1】:tbl_uvregression()
函数需要 y=
的不带引号的输入,而不是带有结果名称的字符串。我更新了你的函数来解释字符串输入。
library(gtsummary)
library(questionr)
data(hdv2003)
reg_log <- function(dataframew, variables, by)
tbl_uvregression(
data = dataframew,
include = all_of(variables),
exponentiate = TRUE,
method.args = list(family = quasibinomial()),
y = !!rlang::sym(by),
method = survey::svyglm
)
hdv2003w <- survey::svydesign(ids = ~1, data = hdv2003, weights = ~hdv2003$poids) #setting the survey.design object
tbl <-
reg_log(hdv2003w, c("age", "sexe", "hard.rock"), "sport")
由reprex package (v2.0.1) 于 2021 年 11 月 12 日创建
【讨论】:
有效!非常感谢!以上是关于关于函数内部 tbl_uvregression 函数中 Y 参数的问题的主要内容,如果未能解决你的问题,请参考以下文章
一个关于调用函数函参写void的错误error C2143 syntax error missing ')' before 'type'