如何按第一个元素对列表进行排序

Paw*_*ski 7 r list

我有一个矢量列表看起来像:

[[1]]
[1] 2 1.0 3.0

[[2]]
[1] 3 3 3

[[3]]
[1] 1 3.0 1.0
Run Code Online (Sandbox Code Playgroud)

我希望它按每个向量的第一个元素按递减顺序排序,如下所示:

[[1]]
[1] 3 3 3

[[2]]
[1] 2 1.0 3.0    

[[3]]
[1] 1 3.0 1.0
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个看起来像的解决方案(当然它不起作用):

list.sortby(function (x) x[1])
Run Code Online (Sandbox Code Playgroud)

Mar*_*box 2

我认为您的示例不应导致将列表的第二个元素放入结果的第一个元素中?如果这是正确的,您可以用来lapply做您想做的事情:

L <- list(c(2,1,3), c(3,3,3), c(1,3,1))
L
lapply(L, sort)
Run Code Online (Sandbox Code Playgroud)

如果您按列表中每个向量中的第一个值排序,则可以通过以下方式完成:

L[order(sapply(L, function(x) x[1], simplify=TRUE), decreasing=TRUE)]

L
[[1]]
[1] 3 3 3

[[2]]
[1] 2 1 3

[[3]]
[1] 1 3 1
Run Code Online (Sandbox Code Playgroud)

从您的示例来看,您似乎想要降序。