2012-02-20 24 views
14

że taki kod badania:Wyświetlanie matrycy bez nazw wierszy i kolumn?

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

i wynik:

 [,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 

działa R ma możliwość tłumienia wyświetlaniem nazwy kolumn i nazwy rzędów tak, że nie otrzymujesz [, 1] [, 2] i tak dalej?

+0

masz na myśli w 'konsoli R'? lub kiedy eksportujesz z 'R'? – Justin

+0

Należy również zauważyć, że w R nie potrzeba średników na końcu instrukcji. "Mat" nie jest poleceniem. Zakładam, że masz na myśli 'matrix (seq1, 2)' ponieważ twoje polecenie nie działa ... – Dason

Odpowiedz

14

Jeśli chcesz zachować nazwy wymiarów, ale po prostu nie je drukować, można zdefiniować nową funkcję drukowania.

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

Użyłbym terminu elipsy w funkcji nadrzędnej i przekażę go do funkcji formatu, więc opcje dostępne do format może być dostępny przez print.matrix, np. scientific = FALSE itp ... –

4

To działa na matrycach:

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

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

Rozwiązanie przez Fojtasek jest chyba najlepszy, ale tu jest inny przy użyciu sprintf zamiast.

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

Istnieje również ?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 
Powiązane problemy