web-dev-qa-db-fra.com

Comment supprimer les noms de colonnes d'une matrice dans R?

  M = matrix(1:9,3,3)
colnames(M)=c('a','b','c')

Supposons que j'ai une matrice M, avec les noms de colonne 'a', 'b', 'c'. Et je veux supprimer les noms, de sorte que M

M    [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

Plutôt que

       a     b    c
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

Comment puis-je faire cela?

14
wolfsatthedoor

Tu peux essayer

colnames(M) <- NULL

En utilisant votre exemple:

> M
#     a b c
#[1,] 1 4 7
#[2,] 2 5 8
#[3,] 3 6 9
> colnames(M) <- NULL
> M
#     [,1] [,2] [,3]
#[1,]    1    4    7
#[2,]    2    5    8
#[3,]    3    6    9

Cependant, si vos données sont stockées dans un data.frame au lieu d'une matrice, cela ne fonctionnera pas. Comme expliqué dans ?data.frame:

Les noms de colonne ne doivent pas être vides et les tentatives d'utilisation de noms vides auront des résultats non pris en charge

Si vos données sont stockées en tant que data.frame (cela peut être vérifié avec class(my_data)), vous pouvez essayer de les convertir en matrice avec M <- as.matrix(my_data). J'espère que cela t'aides.

14
RHertel

Je sais que cela fait un moment que cela n'a pas été posé, mais vu qu'il s'agit d'une question très fréquentée, j'ai pensé que cela pourrait être utile.

Si vous souhaitez effectuer cette action sur M au lieu de ses noms de colonne, vous pouvez essayer

M <- unname(M)
>M
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

Ce serait plus efficace si vous souhaitez diriger ou imbriquer la sortie dans les fonctions suivantes car colnames ne renvoie pas M.

7
hmhensen

Si vous souhaitez supprimer des noms de ligne, utilisez la fonction row.names()

>M
      a b c
1[1,] 1 4 7
2[2,] 2 5 8
3[3,] 3 6 9

>row.names(M)<- NULL ; colnames(M)<- NULL
>M

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
2
Fouad Selmane