R Studio中移除嵌套列表重复层级的实现问题
解决方法
多余嵌套产生的原因是你生成
usagedata时,把已经是列表的观测集合又额外套了一层列表结构,导致usagedata下第一层只有一个元素,这个元素才是你需要的观测列表。
方案1:修复已生成的嵌套列表
直接剥离每个账户下usagedata的第一层即可:
library(purrr) # 遍历所有账户,移除usagedata的多余嵌套层 inputdata_fixed <- map(inputdata, function(acc) { acc$usagedata <- acc$usagedata[[1]] return(acc) })
验证结构:执行length(inputdata_fixed$1$usagedata)会返回3(对应示例场景,你实际12条观测的场景会返回12),且inputdata_fixed$1$usagedata[[1]]可直接取到第一条观测数据,符合预期要求。
方案2:优化原始生成逻辑,从根源避免嵌套问题
你原来的自定义函数和循环逻辑冗余,直接用宽表转长表的逻辑更简洁,且不会产生多余嵌套:
library(dplyr) library(tidyr) inputdata <- my_data %>% rowwise() %>% mutate(usagedata = list( tibble( Time = c(Time.1, Time.2, Time.3), Var = c(Var.1, Var.2, Var.3) ) %>% split(seq(nrow(.))) )) %>% select(Name = Id.1, Unit = Id.2, usagedata) %>% split(seq(nrow(.)))
该方案生成的inputdata直接符合usagedata为单层观测列表的要求,无需额外调整。
内容的提问来源于stack exchange,提问作者DrSchuess
相关产品推荐
相关产品推荐

