我正在制作一个函数来进行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
}