This function melts a high-dimensional array into a form that you can use cast with.

# S3 method for class 'array'
melt(data, varnames = names(dimnames(data)), ...)

Author

Hadley Wickham <h.wickham@gmail.com>

Arguments

data

array to melt

varnames

variable names to use in molten data.frame

...

other arguments ignored

Details

This code is conceptually similar to as.data.frame.table

Examples

a <- array(1:24, c(2,3,4))
melt(a)
#>    X1 X2 X3 value
#> 1   1  1  1     1
#> 2   2  1  1     2
#> 3   1  2  1     3
#> 4   2  2  1     4
#> 5   1  3  1     5
#> 6   2  3  1     6
#> 7   1  1  2     7
#> 8   2  1  2     8
#> 9   1  2  2     9
#> 10  2  2  2    10
#> 11  1  3  2    11
#> 12  2  3  2    12
#> 13  1  1  3    13
#> 14  2  1  3    14
#> 15  1  2  3    15
#> 16  2  2  3    16
#> 17  1  3  3    17
#> 18  2  3  3    18
#> 19  1  1  4    19
#> 20  2  1  4    20
#> 21  1  2  4    21
#> 22  2  2  4    22
#> 23  1  3  4    23
#> 24  2  3  4    24
melt(a, varnames=c("X","Y","Z"))
#>    X Y Z value
#> 1  1 1 1     1
#> 2  2 1 1     2
#> 3  1 2 1     3
#> 4  2 2 1     4
#> 5  1 3 1     5
#> 6  2 3 1     6
#> 7  1 1 2     7
#> 8  2 1 2     8
#> 9  1 2 2     9
#> 10 2 2 2    10
#> 11 1 3 2    11
#> 12 2 3 2    12
#> 13 1 1 3    13
#> 14 2 1 3    14
#> 15 1 2 3    15
#> 16 2 2 3    16
#> 17 1 3 3    17
#> 18 2 3 3    18
#> 19 1 1 4    19
#> 20 2 1 4    20
#> 21 1 2 4    21
#> 22 2 2 4    22
#> 23 1 3 4    23
#> 24 2 3 4    24
dimnames(a) <- lapply(dim(a), function(x) LETTERS[1:x])
melt(a)
#> Warning: 'as.is' should be specified by the caller; using TRUE
#> Warning: 'as.is' should be specified by the caller; using TRUE
#> Warning: 'as.is' should be specified by the caller; using TRUE
#>    X1 X2 X3 value
#> 1   A  A  A     1
#> 2   B  A  A     2
#> 3   A  B  A     3
#> 4   B  B  A     4
#> 5   A  C  A     5
#> 6   B  C  A     6
#> 7   A  A  B     7
#> 8   B  A  B     8
#> 9   A  B  B     9
#> 10  B  B  B    10
#> 11  A  C  B    11
#> 12  B  C  B    12
#> 13  A  A  C    13
#> 14  B  A  C    14
#> 15  A  B  C    15
#> 16  B  B  C    16
#> 17  A  C  C    17
#> 18  B  C  C    18
#> 19  A  A  D    19
#> 20  B  A  D    20
#> 21  A  B  D    21
#> 22  B  B  D    22
#> 23  A  C  D    23
#> 24  B  C  D    24
melt(a, varnames=c("X","Y","Z"))
#> Warning: 'as.is' should be specified by the caller; using TRUE
#> Warning: 'as.is' should be specified by the caller; using TRUE
#> Warning: 'as.is' should be specified by the caller; using TRUE
#>    X Y Z value
#> 1  A A A     1
#> 2  B A A     2
#> 3  A B A     3
#> 4  B B A     4
#> 5  A C A     5
#> 6  B C A     6
#> 7  A A B     7
#> 8  B A B     8
#> 9  A B B     9
#> 10 B B B    10
#> 11 A C B    11
#> 12 B C B    12
#> 13 A A C    13
#> 14 B A C    14
#> 15 A B C    15
#> 16 B B C    16
#> 17 A C C    17
#> 18 B C C    18
#> 19 A A D    19
#> 20 B A D    20
#> 21 A B D    21
#> 22 B B D    22
#> 23 A C D    23
#> 24 B C D    24
dimnames(a)[1] <- list(NULL)
melt(a)
#> Warning: 'as.is' should be specified by the caller; using TRUE
#> Warning: 'as.is' should be specified by the caller; using TRUE
#>    X1 X2 X3 value
#> 1   1  A  A     1
#> 2   2  A  A     2
#> 3   1  B  A     3
#> 4   2  B  A     4
#> 5   1  C  A     5
#> 6   2  C  A     6
#> 7   1  A  B     7
#> 8   2  A  B     8
#> 9   1  B  B     9
#> 10  2  B  B    10
#> 11  1  C  B    11
#> 12  2  C  B    12
#> 13  1  A  C    13
#> 14  2  A  C    14
#> 15  1  B  C    15
#> 16  2  B  C    16
#> 17  1  C  C    17
#> 18  2  C  C    18
#> 19  1  A  D    19
#> 20  2  A  D    20
#> 21  1  B  D    21
#> 22  2  B  D    22
#> 23  1  C  D    23
#> 24  2  C  D    24