如何使用unnest_longer处理含字符与列表混合的tibble列?
解决混合类型列的
unnest_longer报错问题 问题出在some_nested列同时包含字符类型和列表类型元素,unnest_longer无法处理这种混合类型的列。要解决这个问题,先把列内所有元素统一转为列表类型,再执行展开操作。
步骤1:统一列元素类型
用purrr::map遍历列,把非列表元素包裹成单元素列表,列表元素保持不变:
library(tibble) library(tidyr) library(purrr) # 你的原始数据框 df <- tibble(none_nested = c("a", "b", "c"), all_nested = c(list(list("a", "b")), list(list("a", "b")), list(list("a", "b"))), some_nested = c("a", "b", list(list("a", "b"))) ) # 统一some_nested列的类型为列表 df$some_nested <- map(df$some_nested, ~ if (is.list(.x)) .x else list(.x))
步骤2:执行unnest_longer
现在列内所有元素都是列表类型,就可以正常展开了:
df_unnested <- unnest_longer(df, some_nested)
验证结果
展开后的tibble如下:
# A tibble: 4 × 3 none_nested all_nested some_nested <chr> <list> <chr> 1 a <list> a 2 b <list> b 3 c <list> a 4 c <list> b
内容的提问来源于stack exchange,提问作者pgitti
相关产品推荐
相关产品推荐

