我正在try 编写一个R函数,该函数返回汇总统计表(基于rstatix
包中的get_summary stats
函数)并计算Wilcoxon测试.这将对具有感兴趣的常量X变量的几个Y变量执行(这将是汇总统计表的基础).
函数现在看起来是这样的:
summary_stats_and_test <- function(df, xvar, yvars){
df_res <- df %>%
group_by({{ xvar }}) %>%
select({{ yvars }}, {{ xvar }}) %>%
get_summary_stats(type = "mean_sd") %>%
arrange(variable) %>%
mutate(across(where(is.numeric), ~ num(., digits = 1)))
stat_test <- yvars %>%
paste(" ~ ", xvar) %>%
map(as.formula) %>%
map_df(~wilcox_test(.x, data = df))
return(list(table = df_res, test = stat_test))
}
我把df_res
块里的xvar
和yvars
"go 掉"了.
然而,我似乎无法理解如何在Paste函数中指定xvar值才能正确执行.
以下是一些代码,例如:
weight_wc_deltas_vars = c("weight_1", "weight_2", "weight_3", "WC_1", "WC_2", "WC_3")
df %>%
mutate(has_weight = if_else(is.na(col_1), "no", "yes")) %>%
summary_stats_and_test(xvar = has_weight,
yvars=weight_wc_deltas_vars[1:3])
如果函数中的has_weight
没有引号,我会得到一个错误:我的函数中的Error: object 'has_weight' not found'. If it's with quatation mark, I don't get an error, but the
group_by`函数没有效果.
总而言之,我不太清楚最好的做法是不是在R中写函数的参数,带引号还是不带引号.在tidyVerse的上下文中,竞速的概念是明确的,但在这里我被同样的问题卡住了.