2012-12-29 65 views
9

我想要實現的是讓所有打印的數字最多顯示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

如果您有大量數字,例如123456789.87654321,該怎麼辦?如果您不打算使用科學記數法,如何使用最多7位數字打印它? – flodel

+0

@ flodel好點。也許我希望這些非常大的數字使用科學記數法(或超出6位數字)。但是,如果只存在一個解決方案,即截斷每個dumber 6-7位數字;這很好,因爲我從來不需要在R控制檯中打印大量數字。 – Jase

回答

3

是你所有的號碼< 1?你可以嘗試一個簡單的sprintf("%.6f", x)。否則,您可以嘗試根據位數打包sprintf;其他細節請查詢?sprintf

+0

我希望這可以自動應用於每一個單號打印;一個類似於'options(digits = 6)'的解決方案,它只適用於每個上下文中的每個對象,我只需要設置*一次*。不是所有的都是<1,但是我需要以交互方式打印*的所有內容都是<100。 – Jase

10

您可以爲希望打印的類型定義新的打印方法。例如,如果你所有的數字是雙打,您可以創建

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

現在,當你打印一個雙(或雙打的向量),該函數print.double()將被調用,而不是print.default()

根據您需要打印的類型,您可能必須創建類似的功能print.integer()print.complex()等。

要返回到默認打印方式,只需刪除功能print.double()

相關問題