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

Ian*_*des 5 r

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

我的代码现在看起来像

ap.result <- apcluster(args)
clusters <- ap.result@cluster #list of lists
Run Code Online (Sandbox Code Playgroud)

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

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

Ian*_*des 5

根据评论,解决方案如下:

clusters[order(sapply(clusters,length),decreasing=T)]
Run Code Online (Sandbox Code Playgroud)


小智 5

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

sort(ap.result, decreasing=TRUE, sortBy="size")
Run Code Online (Sandbox Code Playgroud)