1

我正在尝试制作一个函数,当给定将变量传递给绘图时,它将产生一个绘图。该变量是从下拉列表中选择的 - 因此aes_string

make_plot <- function(data, plot_var) {
          plot_var <- enquo(plot_var)
          ggplot(data) +
            aes_string(x = !!plot_var) +
            geom_area(alpha = 0.5)
          }
        
make_plot(my_data, variable_i_want_to_plot)

我收到此错误:

Error: Quosures can only be unquoted within a quasiquotation context.
# Bad: list(!!myquosure) # Good: dplyr::mutate(data, !!myquosure)
4

3 回答 3

2

aes_string已被弃用。试试这个功能:

make_plot <- function(data, plot_var) {
  ggplot(data) + aes(x = .data[[plot_var]]) + geom_area(alpha = 0.5)
}
于 2020-11-20T09:53:04.083 回答
2

替换aes_stringaes

aes_string是使用“ggplot2”计算变量的旧方法。Quosures(在常规aes调用中使用)是新方法。你不能把两者混在一起。

于 2020-11-20T09:53:08.183 回答
0

我们可以将字符串转换为symbol 并使用!!

make_plot <- function(data, plot_var) {
       ggplot(data,  aes(x = !! rlang::sym(plot_var)) + geom_area(alpha = 0.5)
  }
于 2020-11-20T20:55:58.987 回答