[英]Using dplyr quosures with mutate()
閱讀使用 dplyr 編程指南時,我遇到了意外錯誤。
事實上,試圖與實例summarize
工作很正確,但如果我嘗試用類似的事情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 中的錯誤:無效的參數類型
我嘗試了很多東西,但這是我最接近指南樣本的。
我錯過了什么 ?
您只需要在每個“砰砰”/取消引用( !!varX
)周圍加上括號:
mutate(x = ((!!var1) - (!!var2))) %>%
完整代碼:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.