You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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)

解决方案

核心思路是提取列表名称里的整数部分,转换成数值后排序,再重新索引原列表:

  1. 提取list1的所有元素名称:
names_list <- names(list1)
  1. 用正则表达式去掉名称前缀,提取末尾的整数并转为数值类型:
nums <- as.integer(sub("gfit10_", "", names_list))
  1. 根据提取的整数排序原列表,同时去除元素名称以匹配目标形式:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 05:19:54