向假人解释问题

Explain quosure to a dummy

我正在尝试制作一个函数,当给定传递给绘图的变量时,该函数将生成绘图。 该变量是从下拉列表中选择的 - 因此 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)

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

make_plot <- function(data, plot_var) {
  ggplot(data) + aes(x = .data[[plot_var]]) + geom_area(alpha = 0.5)
}

aes_string 替换为 aes

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

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

make_plot <- function(data, plot_var) {
       ggplot(data,  aes(x = !! rlang::sym(plot_var)) + geom_area(alpha = 0.5)
  }