在 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" 仍然是长度 1
的 list
。您需要将其转换为 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)
我有一个数据框说:
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" 仍然是长度 1
的 list
。您需要将其转换为 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)