展平列表會刪除內部層次結構的單層,即它內聯列表元素,而保留非列表元素。
用法
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。