1

这是我的数据:

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 中提供一些东西。

我该怎么做?

4

1 回答 1

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"
于 2018-05-14T23:50:48.130 回答