使用by=c(x=y)错误在函数内执行dplyr::left_join

使用by=c(x=y)错误在函数内执行dplyr::left_join,r,function,R,Function,我试图围绕dplyr::left_join编写一个函数,以简化需要多次执行的重复过程 考虑以下代码: testdf <- data.frame(X1 = c("A", "B", "C"), X2 = c(1,2,3)) testdf2 <- data.frame(Y1 = c("a", "b", "c"), Y2 = c(1,2,3)) testdf3 <- dplyr::left_join(testdf, testdf2, by=c("X2" =

我试图围绕dplyr::left_join编写一个函数,以简化需要多次执行的重复过程

考虑以下代码:

    testdf <- data.frame(X1 = c("A", "B", "C"), X2 = c(1,2,3))

    testdf2 <- data.frame(Y1 = c("a", "b", "c"), Y2 = c(1,2,3))

    testdf3 <- dplyr::left_join(testdf, testdf2, by=c("X2" = "Y2"))
但是,错误是相同的,我不知道如何解决这个问题

我需要这个函数来压缩我需要重复执行的几个步骤,因此在另一个函数中执行left_join将帮助我保持代码的干净性和可读性。有人知道如何解决这个问题吗?

这与评估有关,我想在这里看到:也许不是

我找到了一种简陋的方法,但对我来说很有效:

test_function <- function(df1, df2, col1, col2){

   helper <- col2
   names(helper) <- col1

   output_dataframe <- dplyr::left_join(df1, df2, by=helper)

   return(output_dataframe)

}

你查过这些答案了吗?或者谢谢,我一开始没找到这些。似乎dplyr需要引用参数,可以使用enquo函数提供。非常感谢!这种方法确实有效。我不能完全理解为什么以by=cX,Y的形式分配变量是行不通的,但是有了这些信息,我可以继续我的工作。试试ca=1和ca=1,看看结果输出。您将看到它是相同的,这就是为什么ccol1=col2在函数调用中不起作用的原因。
    test_function <- function(df1, df2, col1, col2){

        helper <- c(col1 = col2)

        output_dataframe <- dplyr::join(df1, df2, by=helper)

        return(output_dataframe)

    }
test_function <- function(df1, df2, col1, col2){

   helper <- col2
   names(helper) <- col1

   output_dataframe <- dplyr::left_join(df1, df2, by=helper)

   return(output_dataframe)

}