I have a list of vectors looking like:
[[1]]
[1] 2 1.0 3.0
[[2]]
[1] 3 3 3
[[3]]
[1] 1 3.0 1.0
and I want it to be sorted by first element of every vector, in decreasing order, like that:
[[1]]
[1] 3 3 3
[[2]]
[1] 2 1.0 3.0
[[3]]
[1] 1 3.0 1.0
I am looking for a solution that would look like (of course it is not working):
list.sortby(function (x) x[1])
I assumed that your example should not have resulted in putting the second element of your list in the first element of the result? If this is right, you can use lapply
to do what you want:
L <- list(c(2,1,3), c(3,3,3), c(1,3,1))
L
lapply(L, sort)
If you are ordering by the first value in each vector of you list, then this can be done in the following way:
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
From your example, it looks like you want the decreasing order.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With