如何按子列表的长度对嵌套列表进行排序:
l <- list(list("a","b","c"), list("d","e"), list("f"))
Run Code Online (Sandbox Code Playgroud)
使用这个它应该返回:
list(list("f"), list("d","e"), list("a","b","c"))
Run Code Online (Sandbox Code Playgroud)
我会用
l[order(sapply(l, length))]
Run Code Online (Sandbox Code Playgroud)
@Arun 的评论中给出的解决方案
l[order(vapply(l, length, 1L))]
Run Code Online (Sandbox Code Playgroud)
可以通过告诉 R 长度函数返回的所有内容都将是整数来提供一些性能优势:“对于 vapply,您基本上为 R 提供了一个示例,说明您的函数将返回什么样的内容,这可以节省一些时间来强制返回值以适应在单个原子向量中。” 看:
R 分组函数:sapply、lapply 与 apply。对比 tapply 对比 by 对比聚合