如何提供现有变量以通过引用进行变异?

How to supply existing variable to mutate through reference?

这是我的数据:

df <- tibble::tribble(
         ~A,  ~B,
        "C", "G",
        "D", "H",
        "E", "I",
        "F", "J")

df$A <- as.factor(df$A)

var <- "A"

而且,我想使用类似这样的 rlang 将 A 从 C 重新升级到 E,但它不起作用!

var <- syms(var)
df <- df %>% mutate(!!!var = fct_relevel(!!!var, "E"))

我想要的输出是:

df <- df %>% mutate(A = fct_relevel(A, "E"))
levels(df$A)

但我不想手动提供 A,而是想以编程方式提供这些,使用 var 字符向量符合 rlang syms 的内容。

我应该怎么做?

我同意@alistaire 的评论,但就其价值而言,正确的 rlang 语法应该是:

df <- df %>% mutate(!!var := fct_relevel(!!rlang::sym(var), "E"))
levels(df$A);
#[1] "E" "C" "D" "F"

示例数据

df <- tibble::tribble(
         ~A,  ~B,
        "C", "G",
        "D", "H",
        "E", "I",
        "F", "J")

df$A <- as.factor(df$A)

var <- "A"