簡體   English   中英

dplyr: NSE in joins (by)

[英]dplyr: NSE in joins (by)

我很難弄清楚如何使用 dplyr::left_join 和 NSE 連接兩個表。 問題是我無法為“by”提供正確的值。 我想我現在已經找到了一個解決方案,但感覺就像我正在以一種更復雜的方式來做這件事。 所以,如果你知道一個更簡單/更優雅的解決方案,請告訴我:)

這就是我正在做的事情:

# some data
df <- dplyr::tibble(x=1:10,
                    y=LETTERS[1:10],
                    z=LETTERS[11:20])

# some function
test_fun <- function(df,id){
  id <- rlang::enquo(id)
  join_var <- names(rlang::quos_auto_name(id))[2] # is there an easier way?
  # not important: doing some stuff
  df1 <- df %>%
    dplyr::select(!!id,y)
  df2 <- df %>%
    dplyr::select(!!id,z)
  # join using prepared join_var
  df1 %>%
    dplyr::left_join(df2,setNames(join_var,join_var))
}

test_fun(df,id=x)

當我被要求提供更多上下文和更多解釋以更好地理解我的問題時,我將嘗試在此處提供更多信息:

NSE是非標准評估的縮寫。 我的目標是構建一個 function,它根據用戶可以定義的變量連接到數據集。 主要問題是 dplyr::left_join 中的副參數不接受引用的變量(NSE 參數),因此我必須找到解決方法。 我發現的方式 (join_var <- names(rlang::quos_auto_name(id))[2]) 似乎有點復雜,我正在尋找一個更簡單的解決方案。 那是 - 順便說一下 - 由萊昂內爾亨利提供......謝謝:)

您正在尋找join_var <- rlang::as_name(id)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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