R语言如何实现列表内部排序及按首元素重排列表
R列表排序实现方案
需求拆分为两个独立步骤处理即可,代码可直接复现期望输出:
测试数据
首先复现题目给出的字符型列表:
mylist <- list(c("I312","Z432","O115"), c("S123"), c("O978","T213"), c("T123"))
实现逻辑
- 第一步:遍历列表内每个元素,对元素内部存储的字符向量按字典序做升序排序
- 第二步:提取排序后每个子向量的第一个分量,按照该分量的字典序,调整整个列表的元素排列顺序
完整实现代码
# 子向量内部排序 inner_sorted <- lapply(mylist, sort) # 提取所有子向量的首元素 first_elements <- sapply(inner_sorted, `[`, 1) # 按首元素重排列表 final_res <- inner_sorted[order(first_elements)]
结果校验
执行print(final_res)输出如下,和题目期望结果完全匹配:
[[1]] [1] "I312" "O115" "Z432" [[2]] [1] "O978" "T213" [[3]] [1] "S123" [[4]] [1] "T123"
如果需要精简代码,也可以合并为单行写法(兼容R 4.1.0及以上版本):
final_res <- lst) lst[order(sapply(lst, `[`, 1))](lapply(mylist, sort))
内容的提问来源于stack exchange,提问作者Fateta
相关产品推荐
相关产品推荐

