當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R purrr array-coercion 強製數組列出


array_branch()array_tree() 通過將數組轉換為列表,使數組能夠與 purrr 的泛函一起使用。強製的詳細信息由 margin 參數控製。 array_tree() 創建一個分層列表(樹),其級別與 margin 中指定的維度一樣多,而 array_branch() 則沿著所有提到的維度創建一個平麵列表(通過類比,一個分支)。

用法

array_branch(array, margin = NULL)

array_tree(array, margin = NULL)

參數

array

強製轉換為列表的數組。

margin

一個數字向量,指示要登記的索引的位置。如果 NULL ,則使用完整邊距。如果是 numeric(0) ,則整個數組被包裝在一個列表中。

細節

如果未指定邊距,則默認使用所有尺寸。當 margin 是長度為零的數值向量時,整個數組將包裝在列表中。

例子

# 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/arrays.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Coerce array to list。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。