将dplyr quosures与mutate()一起使用
阅读指南时,我遇到了一个意想不到的错误 事实上,使用将dplyr quosures与mutate()一起使用,r,dplyr,mutate,quosure,R,Dplyr,Mutate,Quosure,阅读指南时,我遇到了一个意想不到的错误 事实上,使用summary尝试示例非常有效,但是如果使用mutate尝试类似的操作,代码将无法运行 这是我的密码: df = data.frame(A=c(464,3465,48,3415,357,21,657), B=c(12,15,985,35,67,13,467)) df %>% mutate(x = A-B) %>% pull(x) #returns the good output : #[1] 452 3450 -937
summary
尝试示例非常有效,但是如果使用mutate
尝试类似的操作,代码将无法运行
这是我的密码:
df = data.frame(A=c(464,3465,48,3415,357,21,657), B=c(12,15,985,35,67,13,467))
df %>%
mutate(x = A-B) %>%
pull(x)
#returns the good output :
#[1] 452 3450 -937 3380 290 8 190
get.diff = function(var1, var2, data=df){
var1 = enquo(var1)
var2 = enquo(var2)
data %>%
mutate(x = (!!var1 - !!var2)) %>%
pull(x)
}
get.diff(A, B)
returns an error
以下是错误:
错误!var2:参数类型无效
我尝试了很多东西,但这是我最接近的指南样本
我错过了什么?您只需要在每个“砰砰”的前后加上括号即可/unquoting(
!!varX
):
完整代码:
df = data.frame(A=c(464,3465,48,3415,357,21,657), B=c(12,15,985,35,67,13,467))
df %>%
dplyr::mutate(x = A-B) %>%
pull(x)
#returns the good output :
#[1] 452 3450 -937 3380 290 8 190
get.diff = function(var1, var2, data=df){
var1 = enquo(var1)
var2 = enquo(var2)
data %>%
dplyr::mutate(x = ((!!var1) - (!!var2))) %>%
pull(x)
}
get.diff(A, B)
[1] 452 3450 -937 3380 290 8 190
这是非常恼人的:你的代码在新的会话中像一个符咒一样工作,但是在我的会话中失败了,并且出现了相同的错误。好的,我明白了。我有
plyr::mutate
而没有dplyr::mutate
。这样类似的包,一起工作,并提供重复的方法,而不是工作相同是非常不令人信服的。。。谢谢你的帮助!不客气。我添加了一个dplyr参考,用于突变以增强再现性,
df = data.frame(A=c(464,3465,48,3415,357,21,657), B=c(12,15,985,35,67,13,467))
df %>%
dplyr::mutate(x = A-B) %>%
pull(x)
#returns the good output :
#[1] 452 3450 -937 3380 290 8 190
get.diff = function(var1, var2, data=df){
var1 = enquo(var1)
var2 = enquo(var2)
data %>%
dplyr::mutate(x = ((!!var1) - (!!var2))) %>%
pull(x)
}
get.diff(A, B)
[1] 452 3450 -937 3380 290 8 190