停止打印大量的零(不是科学记数法)

时间:2012-12-29 09:27:57

标签: r printing numbers digits scientific-notation

我想要实现的是让所有打印的数字显示最大7位数。以下是我要打印的示例:

  

0.000000(相对于实际数字0.000000000029481 .....)

     

0.299180(相对于实际数字为0.299180291884922 .....)

使用options(scipen=99999)options(digits=6),我已成功使用后面的数字。但是,前一个示例将始终打印大量的零后跟五个非零数字。 如何阻止这种情况发生并实现我想要的结果我也不想要科学记谱法

我希望这适用于每个上下文中的所有打印数字。例如,如果我有一些矩阵,称之为A,我打印这个矩阵,我希望每个元素只有6-7位。我希望每个上下文中的每个打印都能自动生成;就像使用options(digits=6)options(scipen=99999)一样,每个上下文都会自动生成。

2 个答案:

答案 0 :(得分:10)

您可以为要打印的类型定义新的打印方法。例如,如果您的所有数字都是双打,则可以创建

print.double=function(x){sprintf("%.6f", x)}

现在,当您打印双精度(或双精度矢量)时,将调用函数print.double()而不是print.default()

您可能需要创建类似的功能print.integer()print.complex()等,具体取决于您需要打印的类型。

要返回默认的打印方法,只需删除函数print.double()

答案 1 :(得分:3)

你的所有数字都是< 1?你可以尝试一个简单的sprintf( "%.6f", x )。否则,您可以尝试根据位数将事物包装到sprintf;查看?sprintf了解其他详细信息。