传递字符串作为列名时出错 R t 测试

error in pass string as column name R t test

我正在尝试为结果变量和分组变量的字符串输入概括一些重复测量方差分析代码,如下所示:

outcome_var<-"outcome_varnam1"
grouping_var <- "grouping_varnam1"

因此在 dplyr 中我可以使用

调用适当的数据框列
!!as.name(outcome_var)

这适用于大多数函数,但在分组成对 t 检验函数时会引发错误

Error: Strings must match column names. Unknown columns: !!as.name(grouping_var)

我想知道如何在不明确使用列对象名称的情况下将变量称为此函数中的列名称,因为完整的 ANOVA 分析代码很长,我希望对数十个不同的结果变量和组因子重复此操作.使用 get() 或 sym() 对我不起作用。下面是完整的示例代码。我希望给定的数据片段能提供足够的信息。

temp<-data.frame(Subj.ID = c("a", "a", "a", "a", "a", "a"), 
                  timepoint = c("101", "102", "103", "104", "105", "106"),
                  grouping_varnam1 = c("Placebo", "Placebo", "Placebo", "Placebo", "Placebo", "Placebo"),
                  outcome_varnam1 = c(12.6, 9.6, 16.4, NA, 43.1, NA))
attach(temp)
outcome_var<-"outcome_varnam1"
grouping_var<-"grouping_varnam1"

#these lines for testing assumptions of anova work fine using the format:
temp %>% group_by(!!as.name(grouping_var)) %>% get_summary_stats(!!as.name(outcome_var), type = "mean_sd")
temp %>% group_by(!!as.name(grouping_var)) %>% identify_outliers(!!as.name(outcome_var))
temp %>% group_by(!!as.name(grouping_var)) %>% shapiro_test(!!as.name(outcome_var))


#this line for a pairwise t-test grouped by timepoint does not work:
temp %>%
      group_by(timepoint) %>%
      pairwise_t_test(!!as.name(outcome_var) ~ !!as.name(grouping_var), paired = FALSE, p.adjust.method = "holm")

Error: Strings must match column names. Unknown columns: !!as.name(grouping_var)

如果您想在公式中使用 srings,您可以使用 reformulate

您的示例数据的观测值太少,无法使用双分组 pairwise_t_test,但一般表示法如下:

library(dplyr)
library(rstatix)

outcome_var <- "Sepal.Length"
grouping_var <- "Species"

iris %>% 
  pairwise_t_test(., reformulate(grouping_var, outcome_var), paired = FALSE, p.adjust.method = "holm")
#> # A tibble: 3 x 9
#>   .y.       group1   group2     n1    n2        p p.signif    p.adj p.adj.signif
#> * <chr>     <chr>    <chr>   <int> <int>    <dbl> <chr>       <dbl> <chr>       
#> 1 Sepal.Le… setosa   versic…    50    50 8.77e-16 ****     1.75e-15 ****        
#> 2 Sepal.Le… setosa   virgin…    50    50 2.21e-32 ****     6.64e-32 ****        
#> 3 Sepal.Le… versico… virgin…    50    50 2.77e- 9 ****     2.77e- 9 ****

reprex package (v0.3.0)

于 2020-07-08 创建