Comment définir ',' comme séparateur décimal avec R

même si mes paramètres de localisation Windows 7 spécifient l'utilisation de", " comme séparateur décimal, R et RStudio me donnent un "." séparateur. Est-il possible de modifier cela? Notez le paramètre" LC_NUMERIC=C " dans la locale ci-dessous: cela semble être forcé par R ou RStudio.

comme je suis au milieu d'un long projet, Je ne suis pas disposé à changer tout de suite à R 3.0 et la dernière version de RStudio. Quelqu'un sait il est tout changement concernant le séparateur décimal question dans ces versions?

j'utilise prettyNum pour résoudre le problème des nombres simples, mais je ne sais pas comment l'utiliser sur une table.

sessionInfo() Version R 2.15.3 (2013-03-01) Plate-forme: x86_64-w64-mingw32/x64 (64 bits)

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  
8
demandé sur lmo 2013-05-05 17:06:16

3 réponses

Le séparateur décimal utilisé par l' read.table et write.table fonctions (et la plupart de leurs cousins) est défini avec le paramètre "dec". read.csv2 est un cas particulier, où la valeur par défaut de dec est "," et le séparateur de champ ("sep") est réglé sur ";".

Vous modifier la sortie de l'impression R, le pointage et les actions de la as.character fonction. Vous de le modifier à partir de ses valeurs par défaut suivantes:

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

cela N'obligera pas R à gérer l'entrée numérique à partir de la console différemment. C'est codé en dur "."comme séparateur décimal.

si vous appliquiez une fonction de texte à un objet table, vous seriez peut-être en train de passer d'un mode 'numérique' à un mode 'caractère', puisque les objets table dans R héritent de la classe "matrix".

14
répondu 42- 2016-10-06 16:27:49

Pourquoi voulez-vous utiliser "," comme séparateur décimal, dans ce cas, comment R interprate cette R expression

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

donc, je suppose que vous voulez juste Outrepasser le séparateur décimal par défaut pour imprimer une sortie et dans ce cas, je pense que prettyNum est le bon outil.

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
2
répondu dickoa 2013-05-05 13:22:13

basé sur le fait que vous voulez l'utiliser avec (Pandoc) markdown aussi loin que je peux voir de la commentaire de blog où vous référence à cette question, je vous suggère aussi d'essayer de mon flatter paquet:

> 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  
-------------------------------------------------------------------

Ou PHP Markdown Extra syntaxe pour faciliter l'utilisation 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   |
0
répondu daroczig 2013-05-06 19:00:38