2013-12-22 42 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(...)函数格式化;使用digits =参数来控制输出中的有效位数。

所以,如果你上面的矩阵是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