array_branch()
和 array_tree()
通過將數組轉換為列表,使數組能夠與 purrr 的泛函一起使用。強製的詳細信息由 margin
參數控製。 array_tree()
創建一個分層列表(樹),其級別與 margin
中指定的維度一樣多,而 array_branch()
則沿著所有提到的維度創建一個平麵列表(通過類比,一個分支)。
例子
# We create an array with 3 dimensions
x <- array(1:12, c(2, 2, 3))
# A full margin for such an array would be the vector 1:3. This is
# the default if you don't specify a margin
# Creating a branch along the full margin is equivalent to
# as.list(array) and produces a list of size length(x):
array_branch(x) |> str()
#> List of 12
#> $ : int 1
#> $ : int 2
#> $ : int 3
#> $ : int 4
#> $ : int 5
#> $ : int 6
#> $ : int 7
#> $ : int 8
#> $ : int 9
#> $ : int 10
#> $ : int 11
#> $ : int 12
# A branch along the first dimension yields a list of length 2
# with each element containing a 2x3 array:
array_branch(x, 1) |> str()
#> List of 2
#> $ : int [1:2, 1:3] 1 3 5 7 9 11
#> $ : int [1:2, 1:3] 2 4 6 8 10 12
# A branch along the first and third dimensions yields a list of
# length 2x3 whose elements contain a vector of length 2:
array_branch(x, c(1, 3)) |> str()
#> List of 6
#> $ : int [1:2] 1 3
#> $ : int [1:2] 2 4
#> $ : int [1:2] 5 7
#> $ : int [1:2] 6 8
#> $ : int [1:2] 9 11
#> $ : int [1:2] 10 12
# Creating a tree from the full margin creates a list of lists of
# lists:
array_tree(x) |> str()
#> List of 2
#> $ :List of 2
#> ..$ :List of 3
#> .. ..$ : int 1
#> .. ..$ : int 5
#> .. ..$ : int 9
#> ..$ :List of 3
#> .. ..$ : int 3
#> .. ..$ : int 7
#> .. ..$ : int 11
#> $ :List of 2
#> ..$ :List of 3
#> .. ..$ : int 2
#> .. ..$ : int 6
#> .. ..$ : int 10
#> ..$ :List of 3
#> .. ..$ : int 4
#> .. ..$ : int 8
#> .. ..$ : int 12
# The ordering and the depth of the tree are controlled by the
# margin argument:
array_tree(x, c(3, 1)) |> str()
#> List of 3
#> $ :List of 2
#> ..$ : int [1:2] 1 3
#> ..$ : int [1:2] 2 4
#> $ :List of 2
#> ..$ : int [1:2] 5 7
#> ..$ : int [1:2] 6 8
#> $ :List of 2
#> ..$ : int [1:2] 9 11
#> ..$ : int [1:2] 10 12
相關用法
- R purrr accumulate 累積向量縮減的中間結果
- R purrr as_vector 將列表強製轉換為向量
- R purrr auto_browse 包裝一個函數,以便在出錯時自動 browser()
- R purrr as_mapper 將對象轉換為映射器函數
- R purrr attr_getter 創建屬性 getter 函數
- R purrr imap 將函數應用於向量的每個元素及其索引
- R purrr list_transpose 轉置列表
- R purrr map_if 有條件地將函數應用於向量的每個元素
- R purrr map2 映射兩個輸入
- R purrr pluck 安全地獲取或設置嵌套數據結構深處的元素
- R purrr insistently 將函數轉換為等待,然後在錯誤後重試
- R purrr map_depth 在給定深度映射/修改元素
- R purrr list_simplify 將列表簡化為原子或 S3 向量
- R purrr rerun 多次重新運行表達式
- R purrr quietly 包裝一個函數來捕獲副作用
- R purrr list_flatten 壓平列表
- 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 轉置列表。
- R purrr flatten 將列表的列表展平為簡單的向量
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Coerce array to list。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。