亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

控制R打印輸出中的十進制數

控制R打印輸出中的十進制數

九州編程 2019-08-03 03:03:18
控制R打印輸出中的十進制數在R中有一個選項可以控制數字顯示。例如:options(digits=10)應該在R會話結束前以10位數給出計算結果。在R的幫助文件中,位參數的定義如下:數字:在打印數字值時控制要打印的數字數。這只是一個建議。有效值為1...22默認7因此,它說這只是一個建議。如果我喜歡總是顯示10位數字,而不是更多或更少呢?我的第二個問題是,如果我喜歡顯示超過22位數字,也就是說,為了更精確的計算,比如100位數,該怎么辦?是否可以使用基R,或者我是否需要一個額外的包/功能?編輯:多虧了杰米的建議,我試著sprintf("%.100f",pi)它給了[1] "3.1415926535897931159979634685441851615905761718750000000000000000000000000000000000000000000000000000"它有48個小數。這是R所能處理的最大極限嗎?
查看完整描述

2 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

之所以它只是一個建議,是因為您可以很容易地編寫一個忽略選項值的打印函數。內置的打印和格式化功能確實使用options值作為默認值。

至于第二個問題,因為R使用的是有限精度的算術,所以你的答案不能精確到小數點15或16位以上,所以一般不需要更多。這個GMPrcdd包處理多個精確算術(通過與GMP庫的間隔),但這主要是與大整數相關,而不是更多的小數位。

數學楓樹將允許你給出你心中想要的多少小數位。

編輯:
考慮小數位和重要數字之間的差異可能是有用的。如果你做的統計測試依賴于第15個重要數字以外的差異,那么你的分析幾乎肯定是垃圾。

另一方面,如果您只是處理非常小的數字,這就不是什么問題,因為R可以處理小到.Machine$double.xmin(通常為2E-308)。

比較這兩種分析。

x1 <- rnorm(50, 1, 1e-15)y1 <- rnorm(50, 1 + 1e-15, 1e-15)t.test(x1, y1)  
#Should throw an errorx2 <- rnorm(50, 0, 1e-15)y2 <- rnorm(50, 1e-15, 1e-15)t.test(x2, y2)  #ok

在第一種情況下,數字之間的差異只出現在許多重要數字之后,因此數據“幾乎不變”。在第二種情況下,雖然數字之間的差異大小是相同的,但與數字本身的大小相比,它們是很大的。


如e3bo所述,您可以使用Rmpfr包裹。

mpfr("3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825")

它們比常規的(雙精度)更慢,內存也更密集。numeric向量,但是如果你有一個條件差的問題或不穩定的算法的話,它是有用的。



查看完整回答
反對 回復 2019-08-05
  • 2 回答
  • 0 關注
  • 510 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號