2014-11-13 5 views
7

Если я печатаю матрицу, она отображается с указанием индексов строк и столбцов в консоли. Например.Печать матрицы без индексов строк и столбцов

> print(diag(3)) 
    [,1] [,2] [,3] 
[1,] 1 0 0 
[2,] 0 1 0 
[3,] 0 0 1 

Как я могу подавить индексы столбца и строки? То есть что-то вроде этого:

> print(diag(3), indices=FALSE) 
1 0 0 
0 1 0 
0 0 1 

Я могу видеть, что cwhmisc пакет должен содержать printM функцию, чтобы сделать это according to the documentation, но это не было, когда я загружаю cwhmisc. Кроме того, это похоже на то, вы должны быть в состоянии в базовой R.

+2

Вопрос: ** Почему ** вы хотите это сделать? Печать на консоль предназначена исключительно для оперативного использования; если вы хотите, чтобы матрица «печаталась» в файле, существует множество опций в таких вещах, как 'write.table' для подавления имен строк и столбцов. –

+0

Ответ: Чтобы быстро скопировать матрицу (на самом деле '' as.matrix (табличное (...)) '') на бумажный чертеж без необходимости писать/открывать/копировать/закрывать файлы и без необходимости вручную удалять индексы , Пожалуй, просто лень. –

ответ

8

Функция prmatrix в base пакете может работать для этого, он может принимать аргументы collab и rowlab:

prmatrix(diag(3), rowlab=rep("",3), collab=rep("",3)) 

1 0 0 
0 1 0 
0 0 1 
+0

(+1) Забавно, что это пример в документации :) –

+0

Это добавляет пространство сверху и слева. Вывод такой же, как для 'm <- diag (3); colnames (m) <- rownames (m) <- rep ("", 3); печати (м) '. – Roland

+0

Документация выглядит устаревшей: она ссылается на 'print.matrix', но в текущих версиях R такой метод печати не существует. –

8

Другое решение с функцией write.table

write.table(diag(3), row.names=F, col.names=F) 

Вы можете сделать его красивее, путем разделения столбцов с табуляцией

write.table(matrix(sample(1000,9),3,3), row.names=F, col.names=F, sep="\t")