我使用split函数将数据分组,结果如下:
$H1050
row.names Avg Tree
1071 1904 2.8530 H1050
1072 1905 2.4030 H1050
1073 1906 1.6030 H1050
1074 1907 1.7660 H1050
1075 1908 2.5150 H1050
$H1040
row.names Avg Tree
1737 1664 4.3200 H1040
1738 1665 4.0900 H1040
1739 1666 5.3100 H1040
1740 1667 4.8000 H1040
1741 1668 3.7000 H1040
1742 1669 4.0400 H1040
1743 1670 4.2800 H1040
总共有大约36个小组。然后我循环遍历这些数据以绘制每个单独的数据组。我希望能够通过row.names列中的元素数量重新排序拆分数据。例如,计算row.names列中元素的数量,然后具有最大数字的组应位于顶部并相应地降序。
这里最好的方法是什么?
非常感谢您的时间和精力!
答案 0 :(得分:1)
这样的事情(假设一个名为l的列表):
num.row.names = lapply(l, function(x) length(unique(x$row.names)))
num.row.names = do.call(c, num.row.names)
l = l[order(num.row.names, decreasing=T)]
如果row.names是拆分数据帧中行的名称而不是数据框中的变量(我不清楚它来自OP),那么你将用第一行替换:
num.row.names = lapply(l, function(x) length(unique(row.names(x))))
答案 1 :(得分:1)
假设splat
是您的拆分数据集:
splat[order(sapply(splat, function(x) length(x[["row.names"]])))]