2015-09-18 7 views
5
M = matrix(1:9,3,3) 
colnames(M)=c('a','b','c') 

Supponiamo di avere una matrice M, con i nomi di colonna 'a', 'b', 'c'. E voglio rimuovere i nomi, in modo che MCome rimuovere i nomi delle colonne da una matrice in R?

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

Piuttosto che

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

Come posso fare questo?

+0

non ottenere il risultato desiderato, ottengo NA NA NA piuttosto che [, 1] [2] [3] Il – robertevansanders

+0

il codice non funziona per te? Funziona bene per me ... Sto cercando di ottenere da una matrice con una tonnellata di nomi assegnati a uno senza nome. La ragione è complicata. Questa dovrebbe essere una cosa abbastanza facile da fare penserei ... – robertevansanders

risposta

7

Si può provare

colnames(M) <- NULL 

Usando il tuo esempio:

> 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 

Tuttavia, se i dati vengono memorizzati in un data.frame invece di una matrice, questo non funzionerà. Come spiegato in ?data.frame:

I nomi delle colonne devono essere non vuoto, e tentativi di utilizzare i nomi vuoti avranno risultati non supportati

Se i dati vengono memorizzati come data.frame (questo può essere controllato con class(my_data)), potresti provare a convertirlo in una matrice con M <- as.matrix(my_data). Spero che questo ti aiuti.

1

Se si desidera eliminare i nomi delle righe usano row.names() funzione

>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