【问题标题】:Writing R function编写 R 函数
【发布时间】:2021-03-06 14:55:23
【问题描述】:

我正在尝试编写一个函数,为我的数据框中的给定协变量计算 pairwise_t_test。

pairs <- function(df, covariate, group){
    pwc <- pairwise_t_test(data = df, formula = covariate ~ group, paired = FALSE )
    print(pwc)
}


pairs(df = df_test_TS, covariate = "is_donor", group = "w.contextual")

我也试过了:

pairs(df = df_test_TS, covariate = is_donor, group = w.contextual)

但他们回来了:

错误:无法提取不存在的列。 ✖ group 列不存在。

或者:

错误:无法提取不存在的列。 ✖ 列covariate 不存在。

中的变量实际上是数据框中列的名称,所以我不明白错误。

【问题讨论】:

    标签: r function


    【解决方案1】:

    尝试像这样使用函数as.formula:

    pairs <- function(df, covariate, group){
        pwc <- pairwise_t_test(data = df,
                               formula = as.formula(paste0(covariate,"~",group)),
                               paired = FALSE )
        print(pwc)
    }
    pairs(df = df_test_TS, covariate = "is_donor", group = "w.contextual")
    

    【讨论】:

      【解决方案2】:

      错误来自 df 没有组或协变量列:

      as.character(covariate ~ group)
      [1] "~"         "covariate" "group"  
      

      因此公式将推动pairwise_t_test 在data.frame 中查找协变量和分组

      pairs <- function(df, covariate, group){
          covariate <- substitute(covariate)
          group <- substitute(group)
          pairwise_t_test(data = df, formula = as.formula(paste0(covariate, "~", group)), paired = FALSE )
      }
      
      pairs(df,  len , supp)
      # A tibble: 1 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 len   OJ     VC        30    30 0.0604 ns       0.0604 ns          
      
      pairs(df,  "len" , "supp")
      # A tibble: 1 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 len   OJ     VC        30    30 0.0604 ns       0.0604 ns   
      

      数据

      data("ToothGrowth")
      df <- ToothGrowth
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多