按成员列表的长度对列表列表进行排序

时间:2014-03-05 21:03:12

标签: r

我有来自作为S4对象类型的包(apcluster)的输出。其中一个成员是确定找到的每个群集成员的列表。我想按长度(最大的群集)对该列表进行排序。

我的代码现在看起来像

ap.result <- apcluster(args)
clusters <- ap.result@cluster #list of lists

然后我可以clusters访问clusters[[i]]的个别成员,但订单是半随机的。如果我unlist(clusters)那么我得到一个向量而不知道它来自哪个子列表。

如何将最长成员列表排序的ap.result@cluster排序到最短的成员列表?

2 个答案:

答案 0 :(得分:5)

该软件包的1.3.4版本已于今日在CRAN上发布(Windows和Mac OS X二进制文件可能需要1-2天才能上线)。受Ian请求的启发,新版本包含一个sort()方法,用于根据给定的排序标准重新排列集群。伊恩问题的解决方案现在如下:

sort(ap.result, decreasing=TRUE, sortBy="size")

答案 1 :(得分:4)

根据评论,这是解决方案:

clusters[order(sapply(clusters,length),decreasing=T)]