web-dev-qa-db-fra.com

Noms de tableaux à 3 dimensions en R

Dans le tableau à 3 dimensions ci-dessous:

ar <- array(someData, c(5, 5, 5));  
rownames(ar) <- ...;  #to set up row names
colnames(ar) <- ...;  #to set up col names

Comment puis-je définir les noms de troisième dimension?

16
RiskTech

Vous pouvez soit définir l'argument dimnames lors de la définition du tableau:

ar <- array(data     = 1:27,
            dim      = c(3, 3, 3),
            dimnames = list(c("a", "b", "c"),
                            c("d", "e", "f"),
                            c("g", "h", "i")))

et/ou vous pouvez définir la dimnames de la troisième dimension comme suit:

dimnames(ar)[[3]] <- c("G", "H", "I")
25
Dan

Je commence toujours par R, mais j’ai trouvé que cela pourrait être utile pour un grand tableau multidimensionnel.

Au lieu de nommer chacun des index ('a', 'b', 'c', 'd', ....), vous pouvez utiliser la fonction offerDimnames () pour générer automatiquement les noms d'index suivant le modèle choisi.

Création de données

ar <- array (data = 1:(4*3*2) , dim=c(4,3,2))
> ar
, , 1

     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12

, , 2

     [,1] [,2] [,3]
[1,]   13   17   21
[2,]   14   18   22
[3,]   15   19   23
[4,]   16   20   24

Dimensions de l'étiquetage

ar <- provideDimnames(ar , sep = "_", base = list('row','col','lev'))

Et vous obtenez

> ar
, , lev

      col col_1 col_2
row     1     5     9
row_1   2     6    10
row_2   3     7    11
row_3   4     8    12

, , lev_1

      col col_1 col_2
row    13    17    21
row_1  14    18    22
row_2  15    19    23
row_3  16    20    24
1
Papalagui