`View()` 的潮汐函数和问题
tidyeval functions and problems with `View()`
代码块 #1 和 #2 相同,除了第 14 行。代码块 #1 使用 print()
调用,代码块 #2 使用 View()
调用。代码块 #1 工作正常。代码块 #2 给出了错误 "Error in FUN(X[[i]], ...) : object 'cal.date' not found"
。为什么?
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 <- df %>% mutate(mutation = 2 * !!variable, horizontal.line = hor.line)
}
parent_function <- function(df, date, variable, hor.line = 6) {
date <- enquo(date)
variable <- enquo(variable)
df <- df %>% child_function(!!variable, hor.line) %>% print() # LINE 14
p <- ggplot(df, aes(!!date, mutation)) +
geom_point() +
geom_hline(aes(yintercept = hor.line))
p
}
parent_function(graph.data, date = cal.date, 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 <- df %>% mutate(mutation = 2 * !!variable, horizontal.line = hor.line)
}
parent_function <- function(df, date, variable, hor.line = 6) {
date <- enquo(date)
variable <- enquo(variable)
df <- df %>% child_function(!!variable, hor.line) %>% View() # LINE 14
p <- ggplot(df, aes(!!date, mutation)) +
geom_point() +
geom_hline(aes(yintercept = hor.line))
p
}
parent_function(graph.data, date = cal.date, variable = random_num, hor.line = 8)
View()
是一个副作用函数,不会 return 任何东西.
在第二种情况下使用 magrittr
包中的 %T>%
而不是 %>%
。
View()
结束管道,这样您就需要一个 T pipe
来代替。我想你可以这样看得更清楚
df %>% child_function(!!variable, hor.line) %>% View() -> df
对比
df %>% child_function(!!variable, hor.line) %T>% View() -> df
代码块 #1 和 #2 相同,除了第 14 行。代码块 #1 使用 print()
调用,代码块 #2 使用 View()
调用。代码块 #1 工作正常。代码块 #2 给出了错误 "Error in FUN(X[[i]], ...) : object 'cal.date' not found"
。为什么?
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 <- df %>% mutate(mutation = 2 * !!variable, horizontal.line = hor.line)
}
parent_function <- function(df, date, variable, hor.line = 6) {
date <- enquo(date)
variable <- enquo(variable)
df <- df %>% child_function(!!variable, hor.line) %>% print() # LINE 14
p <- ggplot(df, aes(!!date, mutation)) +
geom_point() +
geom_hline(aes(yintercept = hor.line))
p
}
parent_function(graph.data, date = cal.date, 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 <- df %>% mutate(mutation = 2 * !!variable, horizontal.line = hor.line)
}
parent_function <- function(df, date, variable, hor.line = 6) {
date <- enquo(date)
variable <- enquo(variable)
df <- df %>% child_function(!!variable, hor.line) %>% View() # LINE 14
p <- ggplot(df, aes(!!date, mutation)) +
geom_point() +
geom_hline(aes(yintercept = hor.line))
p
}
parent_function(graph.data, date = cal.date, variable = random_num, hor.line = 8)
View()
是一个副作用函数,不会 return 任何东西.
在第二种情况下使用 magrittr
包中的 %T>%
而不是 %>%
。
View()
结束管道,这样您就需要一个 T pipe
来代替。我想你可以这样看得更清楚
df %>% child_function(!!variable, hor.line) %>% View() -> df
对比
df %>% child_function(!!variable, hor.line) %T>% View() -> df