【发布时间】:2022-01-19 18:24:12
【问题描述】:
我缺乏理解是,使用下面的例子,我认为:
df2 <- df1 %>% left_join(code_label, by = c("team"="code"))
并且,在一个函数中,
df2 <- df1 %>% left_join(code_label, by = c(x='code'))
将被相同地评估,但它们不是,有没有办法将'x'包装成这样?
df1_id <- c(1, 2, 3, 4, 5, 6)
team <- c(1, 2, 1, 6, 4, 1)
year <- c(2014, 2014, 2009, 2020, 2015, 2017)
df1 <- data.frame(df1_id, team, year)
code_id <- c(1,2,3,4,5,6)
code <- c(1,2,3,4,5,6)
label <- c("team_A", "team_B","team_C","team_D","team_E","team_F")
code_label <- data.frame(code_id, code,label)
df2 <- df1 %>% left_join(code_label, by = c("team"="code"))
给出一个结果。但是我想将 df1 的列名“team”作为未命名的对象(我认为是正确的描述?)传递给如下函数:
f_show_labels_with_codes(x = "team")
f_show_labels_with_codes <- function(x)
{
print(x)
df2 <- df1 %>% left_join(code_label, by = c(x='code'))
}
但它会产生错误:
Error: Join columns must be present in data.
x Problem with `x`
我查看了有关 enquo 等的文档,这对我来说是新的。但是函数中的 print(x) 已经返回 [1] "team"。 This question looks similar 但我觉得不太一样。
【问题讨论】:
-
这可能是回答您问题的另一种方式:stackoverflow.com/questions/49341819/…
-
谢谢 - 因为字段 mpg 是数字,所以在该示例中使用 enquo 吗?