首页 > 解决方案 > 编写 R 函数

问题描述

我正在尝试编写一个计算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不存在。

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

标签: rfunction

解决方案


该错误来自 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

推荐阅读