library("broadcast")
<- array(
x sample(list(letters, month.name, 1:10 ~ "foo"), prod(4:2), TRUE),
dim = 4:2,
dimnames = list(NULL, LETTERS[1:3], c("x", "y"))
)
# summarizing ====
summary(x) # dimensional information is lost
## Length Class Mode
## [1,] 26 -none- character
## [2,] 26 -none- character
## [3,] 3 formula call
## [4,] 3 formula call
## [5,] 12 -none- character
## [6,] 26 -none- character
## [7,] 26 -none- character
## [8,] 26 -none- character
## [9,] 3 formula call
## [10,] 12 -none- character
## [11,] 3 formula call
## [12,] 3 formula call
## [13,] 3 formula call
## [14,] 3 formula call
## [15,] 26 -none- character
## [16,] 12 -none- character
## [17,] 12 -none- character
## [18,] 12 -none- character
## [19,] 12 -none- character
## [20,] 3 formula call
## [21,] 26 -none- character
## [22,] 3 formula call
## [23,] 12 -none- character
## [24,] 26 -none- character
# In the following instances, dimensional position info is retained:
cast_dim2flat(x) |> summary()
## Length Class Mode
## [1, 'A', 'x'] 26 -none- character
## [2, 'A', 'x'] 26 -none- character
## [3, 'A', 'x'] 3 formula call
## [4, 'A', 'x'] 3 formula call
## [1, 'B', 'x'] 12 -none- character
## [2, 'B', 'x'] 26 -none- character
## [3, 'B', 'x'] 26 -none- character
## [4, 'B', 'x'] 26 -none- character
## [1, 'C', 'x'] 3 formula call
## [2, 'C', 'x'] 12 -none- character
## [3, 'C', 'x'] 3 formula call
## [4, 'C', 'x'] 3 formula call
## [1, 'A', 'y'] 3 formula call
## [2, 'A', 'y'] 3 formula call
## [3, 'A', 'y'] 26 -none- character
## [4, 'A', 'y'] 12 -none- character
## [1, 'B', 'y'] 12 -none- character
## [2, 'B', 'y'] 12 -none- character
## [3, 'B', 'y'] 12 -none- character
## [4, 'B', 'y'] 3 formula call
## [1, 'C', 'y'] 26 -none- character
## [2, 'C', 'y'] 3 formula call
## [3, 'C', 'y'] 12 -none- character
## [4, 'C', 'y'] 26 -none- character
cast_dim2flat(x[1:3, 1:2, 2, drop = FALSE]) |> summary()
## Length Class Mode
## [1, 'A', 'y'] 3 formula call
## [2, 'A', 'y'] 3 formula call
## [3, 'A', 'y'] 26 -none- character
## [1, 'B', 'y'] 12 -none- character
## [2, 'B', 'y'] 12 -none- character
## [3, 'B', 'y'] 12 -none- character
cast_dim2flat(x[1:3, 1:2, 2, drop = TRUE]) |> summary()
## Length Class Mode
## [1, 'A'] 3 formula call
## [2, 'A'] 3 formula call
## [3, 'A'] 26 -none- character
## [1, 'B'] 12 -none- character
## [2, 'B'] 12 -none- character
## [3, 'B'] 12 -none- character
# printing ====
print(x) # too compact
## , , x
##
## A B C
## [1,] character,26 character,12 1:10 ~ "foo"
## [2,] character,26 character,26 character,12
## [3,] 1:10 ~ "foo" character,26 1:10 ~ "foo"
## [4,] 1:10 ~ "foo" character,26 1:10 ~ "foo"
##
## , , y
##
## A B C
## [1,] 1:10 ~ "foo" character,12 character,26
## [2,] 1:10 ~ "foo" character,12 1:10 ~ "foo"
## [3,] character,26 character,12 character,12
## [4,] character,12 1:10 ~ "foo" character,26
cast_dim2flat(x) |> print() # much less compact
## $`[1, 'A', 'x']`
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
##
## $`[2, 'A', 'x']`
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
##
## $`[3, 'A', 'x']`
## 1:10 ~ "foo"
##
## $`[4, 'A', 'x']`
## 1:10 ~ "foo"
##
## $`[1, 'B', 'x']`
## [1] "January" "February" "March" "April" "May" "June"
## [7] "July" "August" "September" "October" "November" "December"
##
## $`[2, 'B', 'x']`
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
##
## $`[3, 'B', 'x']`
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
##
## $`[4, 'B', 'x']`
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
##
## $`[1, 'C', 'x']`
## 1:10 ~ "foo"
##
## $`[2, 'C', 'x']`
## [1] "January" "February" "March" "April" "May" "June"
## [7] "July" "August" "September" "October" "November" "December"
##
## $`[3, 'C', 'x']`
## 1:10 ~ "foo"
##
## $`[4, 'C', 'x']`
## 1:10 ~ "foo"
##
## $`[1, 'A', 'y']`
## 1:10 ~ "foo"
##
## $`[2, 'A', 'y']`
## 1:10 ~ "foo"
##
## $`[3, 'A', 'y']`
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
##
## $`[4, 'A', 'y']`
## [1] "January" "February" "March" "April" "May" "June"
## [7] "July" "August" "September" "October" "November" "December"
##
## $`[1, 'B', 'y']`
## [1] "January" "February" "March" "April" "May" "June"
## [7] "July" "August" "September" "October" "November" "December"
##
## $`[2, 'B', 'y']`
## [1] "January" "February" "March" "April" "May" "June"
## [7] "July" "August" "September" "October" "November" "December"
##
## $`[3, 'B', 'y']`
## [1] "January" "February" "March" "April" "May" "June"
## [7] "July" "August" "September" "October" "November" "December"
##
## $`[4, 'B', 'y']`
## 1:10 ~ "foo"
##
## $`[1, 'C', 'y']`
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
##
## $`[2, 'C', 'y']`
## 1:10 ~ "foo"
##
## $`[3, 'C', 'y']`
## [1] "January" "February" "March" "April" "May" "June"
## [7] "July" "August" "September" "October" "November" "December"
##
## $`[4, 'C', 'y']`
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
cast_dim2flat
Cast Dimensional List into a Flattened List
Description
cast_dim2flat()
casts a dimensional list (i.e. recursive array) into a flat list (i.e. recursive vector), but with names that indicate the original dimensional positions of the elements.
Primary purpose for this function is to facilitate printing or summarizing dimensional lists.
Usage
cast_dim2flat(x, ...)
## Default S3 method:
cast_dim2flat(x, ...)
Arguments
x
|
a list |
…
|
further arguments passed to or from methods. |
Value
A flattened list, with names that indicate the original dimensional positions of the elements.