R:根据特定列的平均值更改列表中多个数据帧的顺序

时间:2018-02-12 14:07:45

标签: r

有几个包含多个数据帧的列表。所有数据帧都具有相同的两个列名但长度不同。

一个简单的例子是:

d1 <- data.frame(y1 = c(1:5), y2 = 3)
d2 <- data.frame(y1 = c(6:13), y2 = 1)
d3 <- data.frame(y1 = c(13:21), y2 = 2)
df_list <- list(d3, d1, d2)

现在我正在寻找一个解决方案来计算列表中每个数据框中列y1的平均值,然后更改数据框的顺序,从列{{1}的最低平均值开始}}。

到目前为止,我能够用以下方法计算方法:

y1

但我无法弄清楚如何将其与lapply(df_list, function(x) mean(x[,1]))

结合起来
order()

给了我

  

“顺序错误(lapply(df_list,function(x)mean(x [,1]))):
  'orderVector1'中的未实现类型'list'“

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您可以使用下面的代码执行此操作,但这不会更改您的列表序列,因为三个数据框已按您的指定排序:

df_list=df_list[order(sapply(df_list,function(x) mean(x$y1)))]