2013-05-05 134 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 | 
相关问题