如何在R语言中根据列表名称末尾整数对嵌套列表排序?
按列表名称末尾的整数升序排序嵌套列表
问题场景
你有以下R代码创建的嵌套列表:
gfit10_3 <- list(1,1,1) gfit10_1 <- list(1,1,1) gfit10_2 <- list(1,1,1) gfit10_10 <- list(1,1,1) list1 <- list(gfit10_3=gfit10_3, gfit10_1=gfit10_1, gfit10_2=gfit10_2, gfit10_10=gfit10_10)
需要将list1按内部列表名称末尾的整数升序排序,得到:
list1 <- list(gfit10_1, gfit10_2, gfit10_3, gfit10_10)
解决方案
核心思路是提取列表名称里的整数部分,转换成数值后排序,再重新索引原列表:
- 提取
list1的所有元素名称:
names_list <- names(list1)
- 用正则表达式去掉名称前缀,提取末尾的整数并转为数值类型:
nums <- as.integer(sub("gfit10_", "", names_list))
- 根据提取的整数排序原列表,同时去除元素名称以匹配目标形式:
list1_sorted <- unname(list1[order(nums)])
完整可运行代码
gfit10_3 <- list(1,1,1) gfit10_1 <- list(1,1,1) gfit10_2 <- list(1,1,1) gfit10_10 <- list(1,1,1) list1 <- list(gfit10_3=gfit10_3, gfit10_1=gfit10_1, gfit10_2=gfit10_2, gfit10_10=gfit10_10) # 执行排序操作 nums <- as.integer(sub("gfit10_", "", names(list1))) list1 <- unname(list1[order(nums)]) # 查看排序后的结果 print(list1)
内容的提问来源于stack exchange,提问作者MAJ
相关产品推荐
相关产品推荐

