如何提供现有变量来通过引用变异?

时间:2018-05-14 23:45:39

标签: r dplyr tidyverse rlang forcats

这是我的数据:

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

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

var <- "A"

并且,我想将A从C转换为E使用,也许是rlang,这样的东西,但它不起作用!

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。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

我同意@ 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"