2012-02-20 17 views
14

Ho questo codice nella R:Display a matrice senza nomi di righe e colonne?

seq1 <- seq(1:20) 
mat <- matrix(seq1, 2) 

e il risultato è:

 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 1 3 5 7 9 11 13 15 17 19 
[2,] 2 4 6 8 10 12 14 16 18 20 

Fa R dispone di un'opzione per disattivare la visualizzazione dei nomi delle colonne e dei nomi di riga in modo che io non prendi [, 1] [, 2] e così via?

+0

vuoi dire nella console 'R'? o quando esporti da 'R'? – Justin

+0

Si noti inoltre che in R non è necessario il punto e virgola alla fine dell'istruzione. E 'mat' non è un comando. Suppongo che tu intenda 'matrix (seq1, 2)' perché il tuo comando non funziona ... – Dason

risposta

14

Se si desidera mantenere i nomi delle dimensioni, ma proprio non li stampa, è possibile definire una nuova funzione di stampa.

print.matrix <- function(m){ 
write.table(format(m, justify="right"), 
      row.names=F, col.names=F, quote=F) 
} 

> print(mat) 
1 3 5 7 9 11 13 15 17 19 
2 4 6 8 10 12 14 16 18 20 
+2

Vorrei usare il termine ellissi nella funzione genitore e passarlo alla funzione di formato, quindi le opzioni disponibili per il formato è accessibile da print.matrix, cioè scientific = FALSE, ecc ... –

4

Questo funziona per le matrici:

seq1 <- seq(1:20) 
mat <- matrix(seq1, 2) 

dimnames(mat) <-list(rep("", dim(mat)[1]), rep("", dim(mat)[2])) 
mat 
1

Solution di Fojtasek è probabilmente la migliore, ma qui è un altro utilizzando sprintf invece.

print.matrix <- function(x,digits=getOption('digits')){ 
    fmt <- sprintf("%% .%if",digits) 
    for(r in 1:nrow(x)) 
    writeLines(paste(sapply(x[r,],function(x){sprintf(fmt,x)}),collapse=" ")) 
} 
2

C'è, anche, ?prmatrix:

prmatrix(mat, collab = rep_len("", ncol(mat)), rowlab = rep_len("", ncol(mat))) 
#       
# 1 3 5 7 9 11 13 15 17 19 
# 2 4 6 8 10 12 14 16 18 20 
Problemi correlati