我有一个数据框说:
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)
答案 0 :(得分:4)
“test”仍然是list
长度1
。您需要将其转换为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)