【问题标题】:Standard Evaluation Version of select_() within do_()do_() 中 select_() 的标准评估版本
【发布时间】:2017-03-08 19:42:49
【问题描述】:

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

 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 会导致问题。 欢迎任何提示!

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    正如您已经注意到的,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)
      }
    

    【讨论】:

      猜你喜欢
      • 2016-07-20
      • 2017-12-03
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 2015-03-23
      相关资源
      最近更新 更多