我正在尝试在自定义函数中运行t测试,并且遇到了错误的应用(我相信)。任何帮助将不胜感激。
Unofficial.Microsoft.AnalysisServices.AdomdClient
我的错误消息显示为:
library(tidyverse)
tp_pull <- function(mydata, dv, iv){
dv <- enquo(dv)
iv <- enquo(iv)
t.test(!!dv ~ !!iv, mydata)
}
tp_pull(mydata = mtcars, dv = mpg, iv = vs)
对于上下文,此t检验将成为更大的自定义函数的一部分。
答案 0 :(得分:4)
quosures是tidyeval独有的,并不是基本的R语言所假设的。现在他们只与dplyr合作。这些基本函数(例如OPTIONS
。
如果你想用基础R做这个,你可以使用G.格洛腾迪克的建议
t.test
替代品从传递给调用的promise中捕获未经验证的符号名称,并允许您将它们重新组合成新的表达式。 tp_pull <- function(mydata, dv, iv){
t.test(formula(substitute(dv ~ iv)), mydata)
}
tp_pull(mydata = mtcars, dv = mpg, iv = vs)
调用有助于将formula()
返回的未经调整的表达式强制转换为正确的R公式对象。