按字符长度排序列表?

Ordering a list per character length?

我有这样一个数据集(这只是一个简单的例子):

list1 <- c("FA")
list2 <- c("FA", "EX", "FA")
list3 <- c("FA", "FA")
list <- list(list1, list2, list3)

我需要重新排序 list,以便最长的向量(即 list2)出现在顶部(即 [[1]]),而较短的向量按降序出现,如下所示:

[[1]]
[1] "FA" "EX" "FA"

[[2]]
[1] "FA" "FA"

[[3]]
[1] "FA"

我怎样才能做到这一点?

您可以遍历元素以获得长度,然后使用生成的向量对列表重新排序。

o <- vapply(list, length, 1L)
list[order(o, decreasing = TRUE)]
# [[1]]
# [1] "FA" "EX" "FA"
#
# [[2]]
# [1] "FA" "FA"
#
# [[3]]
# [1] "FA"