我想要实现的是让所有打印的数字显示最大7
位数。以下是我要打印的示例:
0.000000(相对于实际数字0.000000000029481 .....)
0.299180(相对于实际数字为0.299180291884922 .....)
使用options(scipen=99999)
和options(digits=6)
,我已成功使用后面的数字。但是,前一个示例将始终打印大量的零后跟五个非零数字。 如何阻止这种情况发生并实现我想要的结果? 我也不想要科学记谱法。
我希望这适用于每个上下文中的所有打印数字。例如,如果我有一些矩阵,称之为A
,我打印这个矩阵,我希望每个元素只有6-7位。我希望每个上下文中的每个打印都能自动生成;就像使用options(digits=6)
和options(scipen=99999)
一样,每个上下文都会自动生成。
答案 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
了解其他详细信息。