2010-07-09 19 views
10

C'est la première fois que j'utilise un tableau à trois dimensions et j'ai des problèmes pour nommer la troisième dimension.L'attribution de noms à des dimensions de tableau donne une erreur: la longueur des 'dimnames' n'est pas égale à celle du tableau

ReplicateData <- array(0, c(240, 500, 5), dimnames=list(NULL, NULL, c("Returns", "Replicates", "Asset Class"))) 

Je reçois l'erreur:

Length of dimnames not equal to array extent

Cela semble que cela devrait être une question simple mais je ne peux pas trouver un exemple explicite dans l'aide docs ou en ligne.

Répondre

13

La troisième dimension de votre tableau est d'étendue 5, mais le vecteur de noms pour cette dimension est de longueur trois.

+0

Merci. Je pensais que la longueur du nom devrait correspondre au nombre de dimensions. – ProbablePattern

+0

Eh bien, c'est quelque chose que vous pouvez aussi avoir; quelque chose que nous appelons «noms nommés». La fonction tableau() est en fait un exemple important de les utiliser: > with (airquality, table (OzHi = Ozone> 80, Mois, useNA = "Ie cas echeant")) Mois OzHi 5 6 7 8 9 FALSE 25 9 20 19 27 TRUE 1 0 6 7 2 Vous utiliseriez manuellement quelque chose comme l'onglet . <- tableau (1:15, dim = c (3,5), dimnames = liste (OzHi = c ("FAUX", "VRAI", NA), Mois = c ("5", "6", "7", "8", "9"))) pour obtenir la "même" [pourquoi diable, je ne peux pas obtenir "démarque" pour travailler?] –

7

Depuis que je comprends les réponses mieux avec un peu de code o pour me guider ... voici la réponse correcte de Jonathan Chang traduit en code:

ReplicateData <- array(0,c(240,500,5),dimnames=list(NULL, NULL, 
    c("Returns","Replicates","Asset Class", "Fourth Dimname", "Fifth Dimname")))