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

如何将列表的列表转换为带区域ID的长格式tibble

将嵌套列表转换为带region_id的tibble

原始数据定义

首先确认你的列表数据:

regions <- list(c("AO", "BI", "BW", "DJ", "DZ", "ET", "GH", "GM", "KE", "LS", "MA", "MR", "MW", "MZ", "NG", "SL", "SZ", "TN", "TZ", "UG", "ZA", "ZM", "ZR", "ZW"),
           c("BD", "CN", "HK", "ID", "IN", "KR", "MU", "MY", "PH", "PK", "SG", "TH", "TW", "VN", "AU", "NZ"),
           c("AT", "BA", "BE", "BL", "CH", "CI", "CT", "CY", "CZ", "DE", "DK", "EO", "ES", "EU", "FI", "FR", "GA", "GB", "GG", "GR", "HU", "IC", "IE", "IT", "JR", "KZ", "LN", "LU", "LV", "MK", "MT", "NL", "NO", "PO", "PT", "RM", "RS", "RU", "SE", "SJ", "SX", "TR", "UR"),
           c("AD", "AE", "BH", "DU", "EG", "IQ", "IR", "IS", "JO", "KW", "LB", "OM", "PS", "QA", "SA", "SY", "YE"),
           c("CA", "KY", "US"),
           c("AR", "BR", "CB", "CL", "EC", "MX", "PA", "PE", "PY", "UY", "VE"),
           c("JP"))

方法1:使用tidyverse工具包

imap_dfr可以同时遍历列表元素和对应索引(索引直接作为region_id),自动合并为tibble:

library(tidyverse)

region_tibble <- imap_dfr(regions, ~ tibble(country = .x, region_id = .y))

# 查看前几行结果
head(region_tibble)

输出示例:

# A tibble: 6 × 2
  country region_id
  <chr>       <int>
1 AO              1
2 BI              1
3 BW              1
4 DJ              1
5 DZ              1
6 ET              1

方法2:基础R实现(无需额外包)

先拆分列表得到所有国家的向量,再生成对应重复次数的region_id向量,最后组合并转为tibble:

# 提取所有国家
country_vec <- unlist(regions)
# 生成对应region_id:每个子列表的索引重复对应元素个数次
region_id_vec <- rep(seq_along(regions), sapply(regions, length))
# 组合为数据框并转成tibble
region_tibble <- as_tibble(data.frame(country = country_vec, region_id = region_id_vec))

内容的提问来源于stack exchange,提问作者randomwalker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:01:23