每个字符长度排序一个列表?

时间:2015-03-14 05:25:50

标签: r data-manipulation

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

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"

我该如何做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以迭代元素以获取长度,然后使用结果向量重新排序列表。

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