array-coercion: Coerce array to list In purrr: Functional Programming Tools

Description

`array_branch()` and `array_tree()` enable arrays to be used with purrr's functionals by turning them into lists. The details of the coercion are controlled by the `margin` argument. `array_tree()` creates an hierarchical list (a tree) that has as many levels as dimensions specified in `margin`, while `array_branch()` creates a flat list (by analogy, a branch) along all mentioned dimensions.

Usage

 ```1 2 3``` ```array_branch(array, margin = NULL) array_tree(array, margin = NULL) ```

Arguments

 `array` An array to coerce into a list. `margin` A numeric vector indicating the positions of the indices to be to be enlisted. If `NULL`, a full margin is used. If `numeric(0)`, the array as a whole is wrapped in a list.

Details

When no margin is specified, all dimensions are used by default. When `margin` is a numeric vector of length zero, the whole array is wrapped in a list.

Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25``` ```# 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() # A branch along the first dimension yields a list of length 2 # with each element containing a 2x3 array: array_branch(x, 1) %>% str() # 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() # Creating a tree from the full margin creates a list of lists of # lists: array_tree(x) %>% str() # The ordering and the depth of the tree are controlled by the # margin argument: array_tree(x, c(3, 1)) %>% str() ```

Example output

```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
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
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
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
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
```

purrr documentation built on May 29, 2018, 5:05 p.m.