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

标签 r sorting dplyr

我有一个数据框说:

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)

关于r - 在 R 中传递一个具有多个变量名的对象,以对数据框进行排序/排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27785906/

相关文章:

r - Shiny - 年仅输入?

arrays - 如何使用多个键 Swift 4 过滤两个字典?

r - 如何根据另一个查找表/数据框自动为一个数据框插入值?

r - 使用 dplyr 中的函数合并其他行中的值

r - glmnet 给出与输入不同的 lambda 值序列

以整洁的方式通过 tibble 运行 aov 测试

r - R 和 Scala Breeze 之间傅里叶逆变换的差异

javascript - 根据特定列对 csv 进行排序

mysql - 如果多行匹配,则在 mysql 中排序

r - 相对于每组中的一个值进行缩放(通过 dplyr)