do_()中select_()的标准评估版本

时间:2017-03-08 19:42:49

标签: r dplyr

我想创建一个函数,它通过因子变量计算可靠性估计。因此我写了这个不起作用的功能:

 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会导致问题。 欢迎提供每一个提示!

1 个答案:

答案 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)
  }