在 R 中传递一个具有多个变量名称的对象,以对数据框进行排序/排序

passing an object in R, with multiple variable names, to order / sort a data frame

我有一个数据框说:

var1 <- c(7,2,8,4,4)

var2 <- c('m' , 'f' , 'm' , 'f' , 'm')

var3 <- c('x' , 'x' , 'x' , 'y' , 'x')

df <- data.frame(var1 , var1 , var3)

现在我想对var2、var3、var1上的数据进行排序,我有一个对象:

var_sort <- 'var2, var3, var1'

我从另一个数据框中提取的。

所以我使用下面的代码(dplyr):

sorted <- df %>%
            arrange(var_sort)

并得到以下错误:

Error: incorrect size (1), expecting :1439

我也尝试了以下方法,但只对第一个变量进行了排序:

test <- as.vector(strsplit(var_sort , ', '))

sorted <- df %>%
  arrange_(.dots = test) 

"test" 仍然是长度 1list。您需要将其转换为 vector 或使用 as.list

 df %>%
     arrange_(.dots=as.list(test[[1]]))
 #    var1 var2 var3
 #1    2    f    x
 #2    4    f    y
 #3    4    m    x
 #4    7    m    x
 #5    8    m    x

df %>%
   arrange_(.dots=test[[1]])

相同
df %>%
    arrange(var1, var2, var3)
#   var1 var2 var3
#1    2    f    x
#2    4    f    y
#3    4    m    x
#4    7    m    x
#5    8    m    x

数据

df <- data.frame(var1, var2, var3)