2012-11-19 47 views
3

當我在R中運行以下行時,它工作正常,但knitr​​被忽略。爲什麼`options(digits = 3)`在`knitr'中被忽略?

爲什麼?任何解決方案

<<cor>>= 
#mock up data set. 
x <- c(rnorm(100)) 
y <- c(rnorm(100)) 
z <- c(rnorm(100)) 
df <- as.data.frame(cbind(x,y,z)) 
df$x<- as.numeric(df$x) 
df$y<- as.numeric(df$y) 
df$z<- as.numeric(df$z) 
options(digits=3) 
cor(df, use = 'na.or.complete', method = c("spearman")) 
@ 

謝謝任何​​幫助或指針!

+0

您是否嘗試在乾淨的R會話中運行該代碼?無論是用knitr還是直接運行,我都會得到相同的結果。 (請確保在那裏添加對'set.seed'的調用以確保您獲得相同的輸出) – Dason

+1

請注意,我的評論基本上歸結爲 - 「knitr不會忽略選項 - 您對期望發生的事情的期望代碼似乎是錯的「 – Dason

+0

@Dason我不知道我是否理解正確。但是,在這種情況下,我不擔心可重複性。我的問題是我不能將數字減少到只有三個(而不是七個)。 – Gerit

回答

2

我在搜索不同的問題時找到了解決方案。離開了​​,並使用

round(cor(df, use = "na.or.complete", method = c("spearman")), digits = 3) 

就剩下爲什麼options(...)不能正常工作的問題。但我可以高興地生活在那!

謝謝大家的時間!

Gerit

+0

From'?options': 'digits':控制打印數字值時要打印的位數。這只是一個建議。有效值爲1 ... 22,默認值爲7.請參閱「print.default」中有關大於15的值的說明。 – Dason

+0

「僅限建議。」這是否意味着它不是一個嚴格的措施,因此'選項(數字= i)'只是對多少數字結果的粗略近似?我會發現,像R這樣一個很酷的程序很奇怪,但是用'round(...,digits = i)'我可以很好地解決它。你能否告訴我,我不是一個程序員的心!謝謝你的關心。 – Gerit

+0

爲_suggestion only_的含義,我想你需要問R核心或者是誰在R源中理解'./ src/main/print.c';我的膚淺認識只是它不能準確地給你預期的位數;爲了精確控制,你需要像'round()'或'formatC()'這樣的函數 –