簡體   English   中英

使用 qwraps2 summary_table 函數獲取“錯誤:`x` 必須是一個公式”

[英]Getting "Error: `x` must be a formula" with qwraps2 summary_table function

我在創建構建列表列表以傳遞給 summary_table 的 summaries 參數時遇到問題。 當我去使用 summary_table 函數時,它返回

“錯誤: x必須是公式”

summary_test <- list("Gender" = 
     list("Female" = ~ qwraps2::n_perc0(.mydata$sex == "F"),
           "Male" = ~ qwraps2::n_perc0(.mydata$sex == "M")),
  "Age" =
  list("Mean" = ~ qwraps2::mean_sd(.mydata$age, denote_sd = "paren")),
 "Comorbidities" =
   list("HIV Positive" == ~ qwraps2::n_perc0(.mydata$hiv == 1),
        "Type 2 Diabetes" == ~ qwraps2::n_perc0(.mydata$diabetes == 1)))

whole <- summary_table(mydata, summary_test)

沒有你的數據就無法重現,但看起來你在最后一個列表中寫了==而不是= 嘗試:

summary_test <- list("Gender" = 
                   list("Female" = ~ qwraps2::n_perc0(.mydata$sex == "F"),
                        "Male" = ~ qwraps2::n_perc0(.mydata$sex == "M")),
                 "Age" =
                   list("Mean" = ~ qwraps2::mean_sd(.mydata$age, denote_sd = "paren"),
                        "Comorbidities" =
                          list("HIV Positive" = ~ qwraps2::n_perc0(.mydata$hiv == 1),
                               "Type 2 Diabetes" = ~ qwraps2::n_perc0(.mydata$diabetes == 1)))

whole <- summary_table(mydata, summary_test)

最后這奏效了:

summary1 <- list("Age" = 
         list(
           "Mean" = ~ qwraps2::mean_sd(.data$age, digits=1)),
   "Gender" =
       list(
         "Male" = ~ qwraps2::n_perc(.data$sex == "M", digits = 1),
         "Female" = ~ qwraps2::n_perc(.data$sex == "F", digits = 1)),
   "Comorbidities" =
     list(
       "Type 2 Diabetes" = ~ qwraps2::n_perc(.data$diabetes == "1", digits = 1),
       "Past History of PTB" = ~ qwraps2::n_perc(.data$past.ptb == "1", digits = 1),
       "HIV" = ~ qwraps2::n_perc(.data$hiv == "1", digits = 1)
     ))

摘要是公式列表的列表,即最高級別的對象是一個列表,每個元素都是一個列表。 這些低級列表的元素都是要公式化的。 提供的摘要:

summary_test <- list("Gender" = 
                       list("Female" = ~ qwraps2::n_perc0(.mydata$sex == "F"),
                            "Male"   = ~ qwraps2::n_perc0(.mydata$sex == "M")),
                     "Age" =
                       list("Mean" = ~ qwraps2::mean_sd(.mydata$age, denote_sd = "paren")),
                     "Comorbidities" =
                       list("HIV Positive"    == ~ qwraps2::n_perc0(.mydata$hiv == 1),
                            "Type 2 Diabetes" == ~ qwraps2::n_perc0(.mydata$diabetes == 1)))

在“合並症”的定義中有== ,因此是邏輯陳述,而不是公式。

str(summary_test) 
#> List of 3
#>  $ Gender       :List of 2
#>   ..$ Female:Class 'formula'  language ~qwraps2::n_perc0(.mydata$sex == "F")
#>   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>   ..$ Male  :Class 'formula'  language ~qwraps2::n_perc0(.mydata$sex == "M")
#>   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>  $ Age          :List of 1
#>   ..$ Mean:Class 'formula'  language ~qwraps2::mean_sd(.mydata$age, denote_sd = "paren")
#>   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>  $ Comorbidities:List of 2
#>   ..$ : logi FALSE
#>   ..$ : logi FALSE

此外, .mydata需要替換為正確的 tidyverse 數據代詞.data 正確的語法是:

summary_test <- list("Gender" = 
                       list("Female" = ~ qwraps2::n_perc0(.data$sex == "F"),
                            "Male"   = ~ qwraps2::n_perc0(.data$sex == "M")),
                     "Age" =
                       list("Mean" = ~ qwraps2::mean_sd(.data$age, denote_sd = "paren")),
                     "Comorbidities" =
                       list("HIV Positive"    = ~ qwraps2::n_perc0(.data$hiv == 1),
                            "Type 2 Diabetes" = ~ qwraps2::n_perc0(.data$diabetes == 1)))

str(summary_test)
#> List of 3
#>  $ Gender       :List of 2
#>   ..$ Female:Class 'formula'  language ~qwraps2::n_perc0(.data$sex == "F")
#>   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>   ..$ Male  :Class 'formula'  language ~qwraps2::n_perc0(.data$sex == "M")
#>   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>  $ Age          :List of 1
#>   ..$ Mean:Class 'formula'  language ~qwraps2::mean_sd(.data$age, denote_sd = "paren")
#>   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>  $ Comorbidities:List of 2
#>   ..$ HIV Positive   :Class 'formula'  language ~qwraps2::n_perc0(.data$hiv == 1)
#>   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>   ..$ Type 2 Diabetes:Class 'formula'  language ~qwraps2::n_perc0(.data$diabetes == 1)
#>   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>

reprex 包(v0.3.0) 於 2019 年 11 月 14 日創建

更新從 qwraps2 v0.5.0 開始,不再需要使用.data代詞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM