2013-06-24 25 views
1

我遇到了一些關於knitr中打印的數字的問題。 該號碼不符合設置[options('digits')]。 我知道這是大約一年前的問題,但已解決(https://github.com/yihui/knitr/issues/120)。knitr - 奇怪的數字行爲

```{r} 
packageVersion("knitr") 
options("digits") 
a <- 100.101 
a 
as.character(a) 
options(digits=4) 
a 
options(digits=10) 
a 
``` 

這是我得到什麼(在兩個不同的機器相同):http://rpubs.com/markheckmann/6715enter image description here 這裏發生了一些問題,我沒有線索。有任何想法嗎?

+0

你是什麼*期待*? –

+0

至少在第一個'a'的輸出中,我預計'100.101'就像在R控制檯中一樣。但也許我確實誤解了「數字」參數。在文件中是這樣說的:'數字: 控制打印數字值時要打印的位數。「所以我期望'100.101'不是'100.1'(因爲'數字'是4)我得到那個錯誤了嗎? –

+0

或者我錯誤地認爲'數字'指的是小數位? –

回答

3

我不認爲options(digits=10)是在幫你怎樣exepct什麼。也許你的意思是

sprintf("%.10f",101.101) 
# [1] "101.1010000000" 
+0

當有效數字的位數設置爲「4」時,我預計數字「100.101」不會被截斷爲「100.1」。但是,也許我得到的術語「有效數字」錯誤... –

+0

好的。我想我完全誤解了「有效數字」這個詞。有趣的是,我從來沒有注意到這些年來這種行爲。似乎在大多數情況下默認的'digits = 7'就足夠了。但是對以下數字進行黑客攻擊現在已經清楚了:'123456.7''123456.78' –

+0

@MarkHeckmann很高興你找到了答案。對不起,不早點回復,我離線了一下! –

2

這不是一個針織問題;這只是R如何顯示數字。嘗試自己的代碼,無需編織。

a <- 100.101 
a 
#[1] 100.101 
as.character(a) 
#[1] "100.101" 
options(digits=4) 
a 
#[1] 100.1 
options(digits=10) 
a 
[1] 100.101 

print不墊號碼用零補寬度;因爲你需要format

format(a, nsmall = 10) 
#[1] "100.1010000000"