【发布时间】:2019-03-23 18:54:21
【问题描述】:
为什么这个函数执行失败?
my_ttest <- function(df, variable, by){
variable <- enquo(variable)
by <- enquo(by)
t.test(!!variable ~ !!by, df)
}
my_ttest(mtcars, mpg, am) is_quosure(e2) 中的错误:缺少参数“e2”,没有默认值
但是这个有效
my_mean <- function(df, variable, by){
variable <- enquo(variable)
by <- enquo(by)
df %>% group_by(!!by) %>% summarize(mean(!!variable))
}
my_mean(mtcars, mpg, am)
# A tibble: 2 x 2
am `mean(mpg)`
<dbl> <dbl>
1 0 17.1
2 1 24.4
(dplyr_0.8.0.1)
【问题讨论】:
-
t.test是一个基础 R 函数,不知道如何处理带引号的变量。你可以使用t.test(formula(substitute(variable ~ by)), df)而不使用enquo