我想创建一个函数,它通过因子变量计算可靠性估计。因此我写了这个不起作用的功能:
notworkingfunction <- function(dat, grvar){
reldat <- dat%>%
group_by_(grvar)%>%
do_(data.frame(alpha = MBESS::ci.reliability(data.frame(dplyr::select_(., quote(-grvar))))))
return(reldat)
}
notworkingfunction(iris, "Species")
在我看来,select_()的NSE会导致问题。 欢迎提供每一个提示!
答案 0 :(得分:2)
正如您已经注意到的那样,select_
是一个古怪的功能。要使用select_
删除列,您需要使用paste("-", grvar)
表单(请参阅how to drop columns by passing variable name with dplyr?)
完成此操作后,您就不再需要使用do_
了。您可以照常使用do
newfunction <- function(dat, grvar){
reldat <- dat%>%
group_by_(grvar)%>%
do(data.frame(alpha = MBESS::ci.reliability(data.frame(dplyr::select_(., paste("-", grvar))))))
return(reldat)
}