r-在函数中使用dplyr:传递变量名时出错



我正在制作一个函数来进行t检验(针对称为temp_的多个温度变量(。

我想制作一个传递var_name的函数。例如,在传递dataframe的情况下,我在下面做了一个函数,它被成功地执行了:

balance_table <- function(df) {
table_result <- df %>%
rstatix::t_test(temp_ca ~ station) %>%
rstatix::adjust_pvalue(method = "BH") %>%
rstatix::add_significance()
table_result
}
balance_table(df_weather)

然而,当传递一个变量而不是下面的df时,我得到了以下错误。

balance_table <- function(var_name) {
table_result <- df_weather %>%
# var_name <- enquo(var_name)
rstatix::t_test(var_name ~ station) %>%
# rstatix::t_test(!!var_name ~ station) %>%
rstatix::adjust_pvalue(method = "BH") %>%
rstatix::add_significance()
table_result
}
balance_table(temp_ca)
Error in `vec_as_location2_result()`:
! Can't extract columns that don't exist.
✖ Column `as.name(comp_var)` doesn't exist.
Run `rlang::last_error()` to see where the error occurred.
Called from: signal_abort(cnd)

最后,没有使我的函数正常工作的简单情况。

df_weather %>%
rstatix::t_test(temp_ca ~ station) %>%
rstatix::adjust_pvalue(method = "BH") %>%
rstatix::add_significance()
# A tibble: 1 × 10
.y.         group1 group2    n1    n2 statistic    df     p p.adj
<chr>       <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl> <dbl>
1 temp_ca     T      C        124   124     0.648  237. 0.518 0.518
# … with 1 more variable: p.adj.signif <chr>

我尝试了很多模式,比如下面写的,但再次出现错误。如果有任何建议或替代/有效的代码来进行t检验,我将不胜感激(最终,我想制作一个平衡表(

在函数内部使用dplyr时出错

在函数中使用dplyr的变量名

由于您没有提供df_weather,我使用mtcars作为示例

library(rstatix)
library(dplyr)
balance_table <- function(var_name) {
mtcars %>%
t_test(reformulate("cyl", var_name)) %>%
adjust_pvalue(method = "BH") %>%
add_significance()
}
balance_table("mpg")
# A tibble: 3 × 10
#  .y.   group1 group2    n1    n2 statistic    df          p      p.adj p.adj.signif
#  <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>      <dbl>      <dbl> <chr>       
#1 mpg   4      6         11     7      4.72  13.0 0.000405   0.000405   ***         
#2 mpg   4      8         11    14      7.60  15.0 0.00000164 0.00000492 ****        
#3 mpg   6      8          7    14      5.29  18.5 0.0000454  0.0000681  ****        

结果和你做时一样

mtcars %>%
t_test(mpg ~ cyl) %>%
adjust_pvalue(method = "BH") %>%
add_significance()
# .y.   group1 group2    n1    n2 statistic    df          p      p.adj p.adj.signif
#  <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>      <dbl>      <dbl> <chr>       
#1 mpg   4      6         11     7      4.72  13.0 0.000405   0.000405   ***         
#2 mpg   4      8         11    14      7.60  15.0 0.00000164 0.00000492 ****        
#3 mpg   6      8          7    14      5.29  18.5 0.0000454  0.0000681  ****        

请将var_name用双大括号括起来。

balance_table <- function(var_name) {
table_result <- df_weather %>%
rstatix::t_test({{var_name}} ~ station) %>%
rstatix::adjust_pvalue(method = "BH") %>%
rstatix::add_significance()
table_result
}

相关内容

  • 没有找到相关文章

最新更新