dplyr评估:select()与mutate()

时间:2018-01-08 15:14:16

标签: r select dplyr mutate nse

有人可以解释为什么适用于select()的dplyr方法不适用于mutate()吗?

最小工作示例:

data <- as.tibble(cbind(c(1,2,3,4),c(5,6,7,8)))
func <- function(data, var){
  data %>% select(!!var)
}
func2 <- function(data, var){
  data %>% mutate(!!var/10)
}

在这个MWE中,func(data,quo(V1))有效。 func2(data, quo(V1))没有,它会吐出Error in var/10 : non-numeric argument to binary operator。也就是说,允许select()正确评估&#34; var&#34; as&#34; V1&#34;,不允许mutate()做同样的事情。

有任何理由,有什么解决方法吗?

1 个答案:

答案 0 :(得分:1)

只需要小修复,指定新列的名称并添加括号。

func2 <- function(data, var){ data %>% mutate(V3 = (!!var)/10) }