簡體   English   中英

在 mutate() 中使用 dplyr quosures

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM