[英]dplyr evaluation: select() vs. mutate()
誰能解釋為什么與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()
正確地將“ var”評估為“ V1”的相同策略,不允許mutate()
做同樣的事情。
有什么原因,可以解決嗎?
僅需要很小的修正,指定新列的名稱並添加方括號。
func2 <- function(data, var){ data %>% mutate(V3 = (!!var)/10) }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.