Уровни факторов упорядочения с использованием tidyeval - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть dataframe, который выглядит следующим образом:

my_df <- data.frame(
  x = c("V1", "V2", "V3", "V4"),
  score = c(1, 4, 6, 3),
  order = c(1, 4, 3, 2)
)

Уровни my_df$x выглядят так:

> my_df$x
[1] V1 V2 V3 V4
Levels: V1 V2 V3 V4

Я хочу изменить порядокуровни x основаны на столбце order, например:

my_df_ <- my_df %>% 
  mutate(x = factor(x, x[order]))
my_df_$x
[1] V1 V2 V3 V4
Levels: V1 V4 V3 V2

Но я хочу быть в состоянии сделать это внутри функции, используя tidyeval и не могу понять, как я... Я счастлив, что могу передать в функцию либо строки ("x"), либо выражения (x).

1 Ответ

0 голосов
/ 11 сентября 2018

Потенциальное решение с использованием forcats будет выглядеть примерно так:

my_fn <- function(df, x, o) {

  o_ <- enquo(o)
  x_ <- enquo(x)
  x_name <- quo_name(x_)

  df %>% 
    mutate(!!x_name := fct_reorder(!!x_, !!o_))
}
my_fn(my_df, x, order)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...