【问题标题】:How to mutate variable with tidyevaluation如何用 tidyevaluation 改变变量
【发布时间】:2021-08-30 02:33:14
【问题描述】:

我正在尝试创建一个函数,该函数在用户输入数据和变量时打印绘图。我当前的问题是组/子组列可能是数字的,所以我需要在绘图之前将它们变成因子。我正在尝试这样做:

create_plot <- function(df, group, subgroup, y){
  df %>% 
    select({{group}}, {{subgroup}}, {{y}}) %>% 
    mutate({{group}} = as.factor({{group}})) %>% 
    ggplot() +
    geom_boxplot(aes(x={{subgroup}}, y={{y}}, color={{group}}))
  }

create_plot(sales, YEAR, COUNTRY, VALUE)

但它给出了一个错误:

Error: unexpected '=' in:
"    select({{group}}, {{subgroup}}, {{y}}) %>% 
    mutate({{group}} ="

这让我相信 mutate 不应该与 {{variables}} 一起使用。如何正确地做到这一点?

【问题讨论】:

  • 你为什么有{{}}
  • 因为我的数据框中没有名为 group、subgroup 和 y 的变量。我的列是名称 YEAR、COUNTRY 和 VALUE。删除这些会给出错误“错误:找不到对象'YEAR'”。与tidyevaluation相关

标签: r dplyr tidyverse tidyeval


【解决方案1】:

mutate 的左侧使用{{col}} := -

create_plot <- function(df, group, subgroup, y){
  df %>% 
    select({{group}}, {{subgroup}}, {{y}}) %>% 
    mutate({{group}} := as.factor({{group}})) %>% 
    ggplot() +
    geom_boxplot(aes(x={{subgroup}}, y={{y}}, color={{group}}))
}

【讨论】:

    猜你喜欢
    • 2023-02-04
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多