使用 dplyr 和 ggplot2 的函数中的 Tidyeval
Tidyeval in a function with dplyr and ggplot2
所以我用 :=
创建名称,但我想在 ggplot2 中将它用作 y
,这似乎不起作用。
library(tidyverse)
date_group_plot_line <- function(df, group_col, summarise_col) {
group_col <-enquo(group_col)
summarise_col <- enquo(summarise_col)
name <- paste0(rlang::quo_name(summarise_col), "_", "mean")
df %>%
dplyr::group_by(!!group_col) %>%
dplyr::summarise( !!name := mean(!!summarise_col)) %>%
dplyr::filter(!is.na(!!group_col)) %>%
ggplot2::ggplot(ggplot2::aes(x=!!group_col, y= !!name )) +
ggplot2::geom_point()
}
date_group_plot_line(diamonds, cut, price)
#> Warning: package 'bindrcpp' was built under R version 3.4.4
由 reprex package (v0.2.0) 创建于 2019-05-08。
在问题评论部分@LionelHenry 的帮助下,这里是我自己的答案:
library(tidyverse)
date_group_plot_line <- function(df, group_col, summarise_col) {
group_col <-enquo(group_col)
summarise_col <- enquo(summarise_col)
name <- paste0(rlang::quo_name(summarise_col), "_", "mean")
df %>%
dplyr::group_by(!!group_col) %>%
dplyr::summarise( !!name := mean(!!summarise_col)) %>%
dplyr::filter(!is.na(!!group_col)) %>%
ggplot2::ggplot(ggplot2::aes(x=!!group_col, y= !!rlang::sym(name) )) +
ggplot2::geom_point()
}
date_group_plot_line(diamonds, cut, price)
#> Warning: package 'bindrcpp' was built under R version 3.4.4
由 reprex package (v0.2.0) 创建于 2019-05-08。
所以我用 :=
创建名称,但我想在 ggplot2 中将它用作 y
,这似乎不起作用。
library(tidyverse)
date_group_plot_line <- function(df, group_col, summarise_col) {
group_col <-enquo(group_col)
summarise_col <- enquo(summarise_col)
name <- paste0(rlang::quo_name(summarise_col), "_", "mean")
df %>%
dplyr::group_by(!!group_col) %>%
dplyr::summarise( !!name := mean(!!summarise_col)) %>%
dplyr::filter(!is.na(!!group_col)) %>%
ggplot2::ggplot(ggplot2::aes(x=!!group_col, y= !!name )) +
ggplot2::geom_point()
}
date_group_plot_line(diamonds, cut, price)
#> Warning: package 'bindrcpp' was built under R version 3.4.4
由 reprex package (v0.2.0) 创建于 2019-05-08。
在问题评论部分@LionelHenry 的帮助下,这里是我自己的答案:
library(tidyverse)
date_group_plot_line <- function(df, group_col, summarise_col) {
group_col <-enquo(group_col)
summarise_col <- enquo(summarise_col)
name <- paste0(rlang::quo_name(summarise_col), "_", "mean")
df %>%
dplyr::group_by(!!group_col) %>%
dplyr::summarise( !!name := mean(!!summarise_col)) %>%
dplyr::filter(!is.na(!!group_col)) %>%
ggplot2::ggplot(ggplot2::aes(x=!!group_col, y= !!rlang::sym(name) )) +
ggplot2::geom_point()
}
date_group_plot_line(diamonds, cut, price)
#> Warning: package 'bindrcpp' was built under R version 3.4.4
由 reprex package (v0.2.0) 创建于 2019-05-08。