使用quosures在自定义函数中调用公式
我试图在自定义函数中运行t-test,但遇到了一个quosure误用(我相信)。任何帮助都将不胜感激使用quosures在自定义函数中调用公式,r,tidyverse,R,Tidyverse,我试图在自定义函数中运行t-test,但遇到了一个quosure误用(我相信)。任何帮助都将不胜感激 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测试将是更大自定
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测试将是更大自定义函数的一部分 Quosure是tidyeval所独有的,并且不是基础R语言所假定的。现在它们只与dplyr一起工作。它们不太可能与基本函数一起工作,例如
t.test
如果你想用base R来做这件事,你可以使用G.格罗森迪克的建议
tp_pull <- function(mydata, dv, iv){
t.test(formula(substitute(dv ~ iv)), mydata)
}
tp_pull(mydata = mtcars, dv = mpg, iv = vs)
tp\u pull替换args通常使用substitute
完成。e、 g.tp\u pull@g.Grothendieck你的重写比我的好,所以我更新了我的答案。希望没问题。
tp_pull <- function(mydata, dv, iv){
t.test(formula(substitute(dv ~ iv)), mydata)
}
tp_pull(mydata = mtcars, dv = mpg, iv = vs)