如何将含列表的DataFrame展开为整洁DataFrame?
问题解决:展开字符串形式的列表列
你的value列并非真正的列表类型,而是存储了类似list("xxx")格式的字符串文本,这也是unnest()和unchop()操作后无变化的核心原因——这两个函数只识别R原生的列表对象,不处理字符串形式的伪列表。
解决步骤:
第一步:将字符串转为真正的列表
使用eval(parse(text = ))解析字符串中的R代码,结合purrr::map()批量处理每一行:data_clean <- data %>% mutate(value = purrr::map(value, ~ eval(parse(text = .x))))空字符串
list()会被解析为原生空列表,不影响后续操作。第二步:正常展开列表
此时value已转为原生列表列,直接用unnest()即可完成展开,keep_empty = TRUE参数可以保留原数据中空列表对应的行:un_nested <- data_clean %>% tidyr::unnest(value, keep_empty = TRUE)
验证结果
执行str(un_nested)可以看到,处理后的value列是字符型,每行对应原列表中的一个元素,数据已转为整洁格式。
内容的提问来源于stack exchange,提问作者Eizy
相关产品推荐
相关产品推荐

