【问题标题】:Explain quosure to a dummy向假人解释 quosure
【发布时间】:2021-03-03 17:37:36
【问题描述】:

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

【问题讨论】:

    标签: r ggplot2 shiny quosure


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      aes_string 替换为aes

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2010-12-27
          • 2021-01-05
          • 2011-05-08
          • 1970-01-01
          • 1970-01-01
          • 2021-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多