melt-array-e0.rdThis function melts a high-dimensional array into a form that you can use cast with.
This code is conceptually similar to as.data.frame.table
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