gpt4 book ai didi

r - mutate `:=` 和 mutate `=` 之间的 tidyeval 差异

转载 作者:行者123 更新时间:2023-12-04 11:35:25 27 4
gpt4 key购买 nike

这两个代码块都可以工作,即使它们使用不同的等号,一个使用 :=,另一个使用 =。哪个是正确的,为什么?我认为 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)

最佳答案

:= 运算符的目的是允许您在方程的 LHS(左侧)上动态设置变量的名称,您在这里没有这样做。

在许多情况下,包括这一次,我们只关心操纵 RHS。如果您想控制“变异”变量的名称,:= 会派上用场。

https://dplyr.tidyverse.org/articles/programming.html#setting-variable-names

关于r - mutate `:=` 和 mutate `=` 之间的 tidyeval 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53267860/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com