我想按可变的列数对数据框进行排序。例如,对于下面的数据框,我想按“ x”列然后按“ y”列进行排序:
df <- data.frame(x = c("A", "D", "A", "C", "D"), y = c(8, 3, 9, 9, 8),
z = c(1, 1, 1, 2, 1))
我不能指定以下列:
library(dplyr)
arrange(df,x,y)
因为我的代码必须能够按可变的列数对数据帧进行排序(对于此数据帧:1、2或3列)。
我尝试了以下操作:
columnsOrder = c("x","y")
arrange(df,columnsOrder)
但这不起作用。
答案 0 :(得分:1)
如果您要“到达”实列,则可以使用函数arrange_
(现已弃用...)代替arrange
,并使用参数.dots
进行传递您的变量名向量:
arrange_(df, .dots=columnsOrder)
# x y z
#1 A 8 1
#2 A 9 1
#3 C 9 2
#4 D 3 1
#5 D 8 1
或者您可以使用rlang::syms
和quasiquotation
来从字符串向量创建名称:
df %>% arrange(!!! rlang::syms(columnsOrder))