我有一个包含powerset的列表:
> str(ps10)
List of 1023
$ : int 1
$ : int 2
$ : int [1:2] 1 2
$ : int 3
$ : int [1:2] 1 3
$ : int [1:2] 2 3
$ : int [1:3] 1 2 3
...
如何通过内部列表中的某些统计信息(例如分钟,中位数等)对外部列表进行排序?使用HapEstXXR::powerset().
按最大内部元素排序创建列表我希望保留列表结构供以后使用。
sort
,sort.list
和order
不接受列表。在SAS中,我会将统计信息作为另一列添加到数据集中,并通过list.statistic,list id,list elements调用PROC SORT
。我还没有想出如何在R中有效地做到这一点,而没有创建辅助向量来获得排序。
由于
答案 0 :(得分:4)
如果L
是定义为L <- list(c(1,2), c(1,3), c(2,5), c(1,4))
的列表,那么您可以使用:
L[order(-sapply(L, max))]
说明:
sapply(L, max)
获取L
order
内加一个减号,可以得到以最大值最高的元素开头的元素(递减)顺序。L
。答案 1 :(得分:1)
假设您有以下列表,并且您希望根据最大元素逐渐对其进行排序。
L = list(c(1), c(1,2), c(1,4), c(2,5))
因此,在这种情况下,订单将是4,3,2,1。
如果我理解你的问题,你可以简单地遍历列表,然后使用命令:
maxArray = rep(NA, length(L))
for(i in 1:length(L)) {
maxArray[i] = max(L[[i]])
}
order(maxArray, decreasing = TRUE)
将正确返回[1] 4 3 2 1