我有这样的数据集(这只是一个简短的例子):
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"
我该如何做到这一点?
答案 0 :(得分:3)
您可以迭代元素以获取长度,然后使用结果向量重新排序列表。
o <- vapply(list, length, 1L)
list[order(o, decreasing = TRUE)]
# [[1]]
# [1] "FA" "EX" "FA"
#
# [[2]]
# [1] "FA" "FA"
#
# [[3]]
# [1] "FA"