2013-05-05 36 views
6

即使我的Windows 7語言環境設置使用「,」作爲小數點分隔符,R和RStudio給了我一個「。」。分隔器。有什麼方法可以改變它嗎?請注意下面語言環境中的「LC_NUMERIC = C」設置:這似乎是由R或RStudio強制的。如何設置','作爲R的小數點分隔符

因爲我處於一個長期項目的中間,所以我不願立即改變R 3.0和最後一個RStudio版本。有人知道這些版本中的小數分隔符問題是否有任何改變?

我使用prettyNum來解決單個數字的問題,但我不知道如何在桌子上使用它。

sessionInfo() [R版本2.15.3(2013-03-01) 平臺:x86_64的-W64-的mingw32/64(64位)

locale: 
[1] LC_COLLATE=Spanish_Argentina.1252 LC_CTYPE=Spanish_Argentina.1252 
[3] LC_MONETARY=Spanish_Argentina.1252 LC_NUMERIC=C      
[5] LC_TIME=Spanish_Argentina.1252  

attached base packages: 
[1] grid  splines stats  graphics grDevices utils  datasets methods 
[9] base  

other attached packages: 
[1] ascii_2.1   randomForest_4.6-7 pander_0.3.3  fpc_2.1-5   
[5] flexmix_2.3-10  mclust_4.0   cluster_1.14.3  MASS_7.3-23  
[9] Gmisc_0.5.0.0  testthat_0.7  boot_1.3-7   rms_3.6-3   
[13] miscTools_0.6-16 stringr_0.6.2  Hmisc_3.10-1  survival_2.37-2 
[17] lattice_0.20-13 xtable_1.7-1  pixmap_0.4-11  RColorBrewer_1.0-5 
[21] ade4_1.5-1   

loaded via a namespace (and not attached): 
[1] digest_0.6.3  evaluate_0.4.3 modeltools_0.2-19 stats4_2.15.3  
[5] tools_2.15.3 
+0

你的意思是哪個「表」?你如何創建它? – sgibb 2013-05-05 13:09:46

回答

11

read.tablewrite.table功能(以及大多數其表親)中使用的小數分隔被設定爲「DEC」參數。 read.csv2dec的缺省值爲「,」且字段分隔符(「sep」)設置爲「;」的特殊情況。

可以更改R印刷的輸出,繪圖和as.character功能的動作。你改變它從默認:

options(OutDec= ",") # read ?options 
print(pi) 
#[1] 3,141593 
options(OutDec= ",") # restore default value 

不會造成R鍵從控制檯處理數字輸入不同。這是硬編碼爲「。」作爲小數點分隔符。

如果施加一個文本的功能的表對象,你將有可能從一個「數字」強迫到「字符」模式下,由於在R表對象從「基體」類繼承。

+0

精彩!!這比第一個答案要好,我在某些表格中遇到了問題......可以更改「回答」標記嗎? – ap53 2013-05-05 20:18:21

+1

是的,它被完全接受,甚至鼓勵改變選中標記。 – 2013-05-05 23:48:58

2

爲什麼要使用」 「作爲小數點分隔符,在這種情況下,如何R將interprate這個R的表達

x <- c(2,3) # (two vectors or one). 

所以,我以爲你只是想覆蓋默認的小數點分隔符來打印輸出,在這種情況下,我認爲prettyNum是正確的工具。

require(plyr) 
head(numcolwise(prettyNum)(iris, dec = ",")) 

## Sepal.Length Sepal.Width Petal.Length Petal.Width 
## 1   5,1   3,5   1,4   0,2 
## 2   4,9   3   1,4   0,2 
## 3   4,7   3,2   1,3   0,2 
## 4   4,6   3,1   1,5   0,2 
## 5   5   3,6   1,4   0,2 
## 6   5,4   3,9   1,7   0,4 
+0

是的,我只需要輸出。我以前從未使用過plyr,也不知道numcolwise的功能。謝謝! – ap53 2013-05-05 14:51:56

0

基礎上要儘可能我可以從blog comment where you referenced this question看到(Pandoc)降價到使用它的事實,我也建議試用一下我的pander package

> library(pander) 
> panderOptions('decimal.mark', ',') 
> panderOptions('table.split.table', Inf) 
> pander(head(iris)) 

------------------------------------------------------------------- 
Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
-------------- ------------- -------------- ------------- --------- 
    5,1   3,5   1,4   0,2  setosa 

    4,9    3   1,4   0,2  setosa 

    4,7   3,2   1,3   0,2  setosa 

    4,6   3,1   1,5   0,2  setosa 

     5    3,6   1,4   0,2  setosa 

    5,4   3,9   1,7   0,4  setosa 
------------------------------------------------------------------- 

或PHP Markdown額外的語法更容易使用knitr

> pandoc.table(head(iris), style = 'rmarkdown') 


| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species | 
|:--------------:|:-------------:|:--------------:|:-------------:|:---------:| 
|  5,1  |  3,5  |  1,4  |  0,2  | setosa | 
|  4,9  |  3  |  1,4  |  0,2  | setosa | 
|  4,7  |  3,2  |  1,3  |  0,2  | setosa | 
|  4,6  |  3,1  |  1,5  |  0,2  | setosa | 
|  5  |  3,6  |  1,4  |  0,2  | setosa | 
|  5,4  |  3,9  |  1,7  |  0,4  | setosa | 
相關問題