这是我的清单
example <- list(list(vals = list(1, 2, 3), param = list(4,5,6), p.val = 0.5),
list(vals = list(1, 2, 3), param = list(4,5,6), p.val = 0.2),
list(vals = list(1, 2, 3), param = list(4,5,6), p.val = 1.2),
list(vals = list(1, 2, 3), param = list(4,5,6), p.val = 0.9))
如何按其p-val对列表进行升序排序?
我的主要问题是,我似乎看到的唯一解决方案是遍历整个列表的for循环,实际上是10万个元素。
编辑:我将示例列表更改为对我的实际数据更真实。
答案 0 :(得分:1)
由于“第一级”列表值实际上也是列表,因此您需要首先提取它们,然后对结果运行order
。对于第二个版本,您只需将“ p.val”替换为提取索引
dput(example[ order( sapply(example, "[[", 'p.val')) ] )
list(list(vals = list(1, 2, 3), param = list(4, 5, 6), p.val = 0.2),
list(vals = list(1, 2, 3), param = list(4, 5, 6), p.val = 0.5),
list(vals = list(1, 2, 3), param = list(4, 5, 6), p.val = 0.9),
list(vals = list(1, 2, 3), param = list(4, 5, 6), p.val = 1.2))
这不会改变example的值,因此要使其成为“ stick”,您需要将结果分配给一个名称,可能是相同的名称example
。