按字符长度排序列表?
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"
我有这样一个数据集(这只是一个简单的例子):
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"