展平列表会删除内部层次结构的单层,即它内联列表元素,而保留非列表元素。
用法
list_flatten(
x,
...,
name_spec = "{outer}_{inner}",
name_repair = c("minimal", "unique", "check_unique", "universal")
)
参数
- x
-
一个列表。
- ...
-
这些点用于将来的扩展,并且必须为空。
- name_spec
-
如果内部名称和外部名称都存在,请控制它们的组合方式。应该是使用变量
inner
和outer
的粘合规范。 - name_repair
-
"minimal"
、"unique"
、"universal"
或"check_unique"
之一。有关这些选项的含义,请参阅vctrs::vec_as_names()
。
例子
x <- list(1, list(2, 3), list(4, list(5)))
x |> list_flatten() |> str()
#> List of 5
#> $ : num 1
#> $ : num 2
#> $ : num 3
#> $ : num 4
#> $ :List of 1
#> ..$ : num 5
x |> list_flatten() |> list_flatten() |> str()
#> List of 5
#> $ : num 1
#> $ : num 2
#> $ : num 3
#> $ : num 4
#> $ : num 5
# Flat lists are left as is
list(1, 2, 3, 4, 5) |> list_flatten() |> str()
#> List of 5
#> $ : num 1
#> $ : num 2
#> $ : num 3
#> $ : num 4
#> $ : num 5
# Empty lists will disappear
list(1, list(), 2, list(3)) |> list_flatten() |> str()
#> List of 3
#> $ : num 1
#> $ : num 2
#> $ : num 3
# Another way to see this is that it reduces the depth of the list
x <- list(
list(),
list(list())
)
x |> pluck_depth()
#> [1] 3
x |> list_flatten() |> pluck_depth()
#> [1] 2
# Use name_spec to control how inner and outer names are combined
x <- list(x = list(a = 1, b = 2), y = list(c = 1, d = 2))
x |> list_flatten() |> names()
#> [1] "x_a" "x_b" "y_c" "y_d"
x |> list_flatten(name_spec = "{outer}") |> names()
#> [1] "x" "x" "y" "y"
x |> list_flatten(name_spec = "{inner}") |> names()
#> [1] "a" "b" "c" "d"
相关用法
- R purrr list_transpose 转置列表
- R purrr list_simplify 将列表简化为原子或 S3 向量
- R purrr list_c 将列表元素组合成单个数据结构
- R purrr list_assign 修改列表
- R purrr lmap 将函数应用于列表的列表元素
- R purrr accumulate 累积向量缩减的中间结果
- R purrr imap 将函数应用于向量的每个元素及其索引
- R purrr as_vector 将列表强制转换为向量
- R purrr map_if 有条件地将函数应用于向量的每个元素
- R purrr map2 映射两个输入
- R purrr array-coercion 强制数组列出
- R purrr auto_browse 包装一个函数,以便在出错时自动 browser()
- R purrr pluck 安全地获取或设置嵌套数据结构深处的元素
- R purrr insistently 将函数转换为等待,然后在错误后重试
- R purrr map_depth 在给定深度映射/修改元素
- R purrr rerun 多次重新运行表达式
- R purrr quietly 包装一个函数来捕获副作用
- R purrr pmap 同时映射多个输入(“并行”)
- R purrr possibly 包装函数以返回值而不是错误
- R purrr head_while 查找全部满足谓词的头/尾。
- R purrr rbernoulli 从伯努利分布生成随机样本
- R purrr rate-helpers 创建延迟率设置
- R purrr keep_at 根据元素的名称/位置保留/丢弃元素
- R purrr keep 根据元素的值保留/丢弃元素
- R purrr transpose 转置列表。
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Flatten a list。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。