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