我有一个看起来像这样的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我希望能够基于order列对x级别进行重新排序,如下所示:
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)传递给函数。
发布于 2018-09-11 23:15:33
使用forcats的潜在解决方案应该是这样的:
my_fn <- function(df, x, o) {
o_ <- enquo(o)
x_ <- enquo(x)
x_name <- quo_name(x_)
df %>%
mutate(:= fct_reorder(x_, !!o_))
}
my_fn(my_df, x, order)https://stackoverflow.com/questions/52278951
复制相似问题