首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dplyr:联接中的NSE (by)

dplyr:联接中的NSE (by)
EN

Stack Overflow用户
提问于 2019-10-23 15:49:32
回答 1查看 210关注 0票数 4

我花了很长时间才弄清楚如何使用dplyr::left_join和NSE来连接两个表。问题是我不能给'by‘提供正确的值。我想我现在已经找到了一个解决方案,但感觉我是在以一种额外复杂的方式来做这件事。因此,如果您知道更简单/更优雅的解决方案,请让我知道:)

这就是我正在做的:

代码语言:javascript
复制
# 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是非标准评估的缩写。我的目标是构建一个基于用户可以定义的变量连接到数据集的函数。主要的问题是dplyr::left_join中的by参数不接受带引号的变量(NSE参数),所以我必须找到一种解决方法。我找到(join_var <- names(rlang::quos_auto_name(id))2)的方法似乎有点复杂,我正在寻找一个更简单的解决方案。顺便说一下,这是由莱昂内尔·亨利提供的。谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-23 15:57:36

你在找join_var <- rlang::as_name(id)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58518021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档