在R中看到left_join发生意外错误

时间:2019-12-15 16:39:22

标签: r dplyr

一个简单的可重现案例,给出了我不理解的错误消息:

a <- data.frame(this_year = c(1, 2, 3, 4), following_year = c(2, 3, 4, 5))
b <- data.frame(year = c(2, 3, 4, 5), date = as.Date(c("1990-01-01", "1991-01-01", "1992-01-01", "1993-01-01")))
z <- a %>% left_join(b, by = "following_year = year")

给出错误:

  

错误:by不能包含连接列following_year = year,即   LHS中缺少

任何人都可以解释问题是什么吗?

还...可以通过运行类似的东西来简化

z <- a %>% left_join(b, by = "(this_year + 1) = year")

即要对by =“”部分中的表达式求值吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

正确的表达式是在连接函数(=)中用c分隔的每个列名都用引号引起来。如果我们将整体作为字符串传递,则不会根据?left_join

的文档进行评估
  

by-要在x和y上通过不同的变量联接,请使用命名向量。例如,by = c(“ a” =“ b”)将x.a与y.b匹配。

library(dplyr)
a %>% 
  left_join(b, by = c("following_year" = "year"))