如何按每个数据框中的列值对列表中的数据框进行排序?

时间:2019-07-12 15:57:40

标签: r

我正在尝试根据机器(数据帧)的机器得分(列)对它们进行排名,并将它们从最低到最高排序。每台机器都是列表中的一个元素。因此,我有一个281个数据帧的列表,所有这些数据帧都包含一个标题为Machine Score的列。

我已经尝试过多次编写一个函数,但是总是被列表中元素的实际排序所困扰。

mach1 <- data.frame('A' = 1:3, 'B' = 1:3, 'C' = .5)
mach2 <- data.frame('A' = 1:4, 'B' = 2:5, 'C' = .2)
mach3 <- data.frame('A' = 1, 'B' = 2, 'C' = .9)

list <- list(mach1,mach2,mach3)

我想做的是对列表元素进行排序,以便它们按以下顺序显示:

 list(mach2,mach1,mach3)

因此,列C中具有最低值的数据框会首先出现,依此类推。

1 个答案:

答案 0 :(得分:0)

R的基本选项是从minlist中提取order

out <- list[order( sapply(list, function(x) min(x$C)))]
out
#[[1]]
#  A B   C
#1 1 2 0.2
#2 2 3 0.2
#3 3 4 0.2
#4 4 5 0.2

#[[2]]
#  A B   C
#1 1 1 0.5
#2 2 2 0.5
#3 3 3 0.5

#[[3]]
#  A B   C
#1 1 2 0.9

注意:list是一个函数,因此最好不要使用函数名来命名标识符对象