2013-12-22 7 views
1

Я работаю над функцией, чтобы делать свой собственный вывод из некоторых линейных моделей, и я хочу сделать матрицу вывода. Я пытаюсь получить матрицу с разными десятичными правилами. например, если у меня есть:та же матрица с различными десятичными правилами

structure(c(1, 2, 3.45, 5.67), .Dim = c(4L, 1L), .Dimnames = list(c("A", "B", "C", "D"), NULL))' 

это можно сделать строки 1 и 2 просто показать, как целые числа и десятичные остаются в двух последних строках? Я знаю, что могу сделать две матрицы и использовать rbind(), но я хочу, чтобы выравнивание было таким же, чтобы столбцы выстроились хорошо.

+3

№ R матрицы должны быть атомарными, то есть все одинаковые режимы хранения: (Нет смешанных типов данных.). Единственный способ достичь вашей цели - создать новый класс с другим методом печати. –

+0

ОК спасибо, сосредоточьтесь на этом. – JPK

ответ

3

Это очень легко, если вы превратить вашу цифровую матрицу в матрицу символов перед печатью:

print("[<-"(mat, as.character(mat)), quote = FALSE) 

Здесь отображается:

[,1] 
A 1 
B 2 
C 3.45 
D 5.67 

Эта команда аналогична:

mat[] <- as.character(mat) 
print(mat, quote = FALSE) 

но сохраняет mat без изменений.

+0

большое спасибо! – JPK

2

Выход в формате R отформатирован с использованием функции print(...); используйте параметр digitits = для управления количеством значимых цифр на выходе.

Таким образом, если над вашей матрицы M:

print(M[1:2,],digits=0) 
# A B 
# 1 2 
print(M[3:4,],digits=3) 
# C D 
# 3.45 5.67 
+0

Проблема здесь в том, что я хочу одну матрицу для всех значений, так как мои имена строк различаются по длине, поэтому я пытаюсь создать функцию, которая выводит из линейных моделей информацию о том, как я ее хочу (и больше узнать о программировании R), и Я хочу вектор значений с именами строк как разные метки значений. – JPK

Смежные вопросы