Как поставить существующую переменную для изменения через ссылку? - PullRequest
0 голосов
/ 15 мая 2018

Вот мои данные:

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.

Как мне это сделать?

1 Ответ

0 голосов
/ 15 мая 2018

Я согласен с комментарием @ 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"
...