有几个包含多个数据帧的列表。所有数据帧都具有相同的两个列名但长度不同。
一个简单的例子是:
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'“
感谢您的帮助!
答案 0 :(得分:3)
您可以使用下面的代码执行此操作,但这不会更改您的列表序列,因为三个数据框已按您的指定排序:
df_list=df_list[order(sapply(df_list,function(x) mean(x$y1)))]