这两个代码块即使使用不同的等号也能工作,一个使用 :=
,另一个使用 =
。哪个是正确的,为什么?我认为 tidyeval 在使用 dplyr 函数时需要 :=
,但奇怪的是 =
在我的 mutate 调用中工作得很好。
1
library(tidyverse)
set.seed(1)
graph.data <- tibble(cal.date = as.Date(40100:40129, origin = "1899-12-30"),
random_num = rnorm(30, 8, 5))
child_function <- function(df, variable, hor.line = 6) {
variable <- enquo(variable)
df <- mutate(df, mutation := 2 * !! variable, horizontal.line := hor.line)
df
}
child_function(graph.data, variable = random_num, hor.line=8)
2
library(tidyverse)
set.seed(1)
graph.data <- tibble(cal.date = as.Date(40100:40129, origin = "1899-12-30"),
random_num = rnorm(30, 8, 5))
child_function <- function(df, variable, hor.line = 6) {
variable <- enquo(variable)
df <- mutate(df, mutation = 2 * !! variable, horizontal.line = hor.line)
df
}
child_function(graph.data, variable = random_num, hor.line=8)
最佳答案
在这种情况下没有义务放置 :=
。
当您想要执行以下操作时,它变得必须:
child_function <- function(df, variable, hor.line = 6, mt_name = "mutation") {
variable <- enquo(variable)
df <- mutate(df, !! mt_name := 2 * !! variable, horizontal.line = hor.line)
}
关于r - mutate `:=` 和 mutate `=` 之间的 tidyeval 差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53267860/