11

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

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

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

options(scipen=99999)通过使用和,我在后一种类型的数字上取得了成功options(digits=6)。但是,前一个示例总是会打印大量的零,后跟五个非零数字。如何阻止这种情况发生并达到我想要的结果我也不要科学记数法

我希望这适用于每个上下文中的所有打印数字。例如,如果我有一些矩阵,调用它A,然后打印这个矩阵,我希望每个元素只有 6-7 位。我希望这对于每个上下文中的每个打印都是自动的;就像使用options(digits=6)options(scipen=99999)使其在每个上下文中自动运行一样。

4

2 回答 2

12

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

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

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

根据您需要打印的类型,您可能需要创建类似的功能print.integer()、等。print.complex()

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

于 2013-01-05T14:09:50.003 回答
3

你所有的数字都<1吗?你可以尝试一个简单的sprintf( "%.6f", x ). 否则,您可以尝试sprintf根据位数包装东西;检查?sprintf其他细节。

于 2012-12-29T11:23:03.597 回答