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

如何为purrr函数生成的嵌套列表顶层命名

为purrr生成的嵌套列表顶层分配名称问题

我正在使用purrr针对不同AOI迭代处理sf对象,并将输出存储为嵌套列表,但无法为列表的顶层分配名称。我认为sf对象与该问题无关,但仍附上基于sf的示例。期望输出可通过区域名称查询列表,提取区域和州子列表用于其他映射函数,且末尾两个mapview调用结果一致。

环境与数据准备

# 加载所需包
library(spData)
library(sf)
library(tidyverse)
library(mapview)

# 处理美国州数据,转换REGION为字符型
STATES <- spData::us_states %>%
  mutate(REGION=as.character(REGION))

# 按REGION分组并拆分,为列表命名
REGIONS <- STATES %>%
  group_by(REGION) %>%
  summarise() %>%
  group_by(REGION) %>%
  group_split(.keep = T) %>%
  set_names(., nm=map(., \(x) first(x$REGION)))

# 计算每个区域与州的交集
REGIONS_INTERSECT <- REGIONS %>%
  map( \(x) st_intersection(STATES, x))

# 获取唯一的区域名称
REGION_NAMES <- as.character(STATES$REGION) %>%
  unique()

尝试的几种写法(均未达到预期)

写法1:格式符合要求,但顶层列表无名称

OUT_LIST <- map(REGION_NAMES, \(x){
  REGION_LIST <- REGIONS[x] %>%
    set_names(nm="Region")
  STATE_LIST <- REGIONS_INTERSECT[x] %>%
    set_names(nm="State")
  
  OUTPUT <-  c(REGION_LIST, STATE_LIST )
    
  return(OUTPUT)
}) 

写法2:修改了下层列表的名称,而非顶层

OUT_LIST <- map(REGION_NAMES, \(x){
  REGION_LIST <- REGIONS[x] %>%
    set_names(nm="Region")
  STATE_LIST <- REGIONS_INTERSECT[x] %>%
    set_names(nm="State")
  
  OUTPUT <-  c(REGION_LIST, STATE_LIST ) %>%
    set_names(., nm=x)
  
  return(OUTPUT)
}) 

写法3:同样修改了下层列表名称

OUT_LIST <- map(REGION_NAMES, \(x){
  REGION_LIST <- REGIONS[x] %>%
    set_names(nm="Region")
  STATE_LIST <- REGIONS_INTERSECT[x] %>%
    set_names(nm="State")
  
  x <-  c(REGION_LIST, STATE_LIST ) 
  
  return(OUTPUT)
}) 

写法4:仅修改了一个下层列表的名称

OUT_LIST <- map(REGION_NAMES, \(x){
  REGION_LIST <- REGIONS[x] %>%
    set_names(nm="Region")
  STATE_LIST <- REGIONS_INTERSECT[x] %>%
    set_names(nm="State")
  
  OUTPUT <-  c(REGION_LIST, STATE_LIST ) 
  
  names(OUTPUT)<-x
  
  return(OUTPUT)
}) 

预期目标

在理想的输出中,以下两个mapview调用的结果完全一致:

mapview(OUT_LIST[[1]][[1]])+mapview(OUT_LIST[[1]][[2]], col.regions="red")

mapview(OUT_LIST[["South"]][["Region"]])+mapview(OUT_LIST[["South"]][["State"]], col.regions="red")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:09:57