2013-05-05 21 views
6

Mimo że moje ustawienia regionalne systemu Windows 7 określają użycie "," jako separatora dziesiętnego, R i RStudio dają mi "." separator. Czy istnieje sposób na zmianę tego? Zwróć uwagę na ustawienie "LC_NUMERIC = C" w ustawieniach narodowych poniżej: wydaje się, że zostało wymuszone przez R lub RStudio.Jak ustawić "," jako separator dziesiętny z R

Ponieważ jestem w trakcie długiego projektu, nie chcę od razu zmieniać wersji na R 3.0 i ostatnią wersję RStudio. Czy ktokolwiek wie, czy w tych wersjach jest jakaś zmiana dotycząca separatora dziesiętnego?

Używam prettyNum, aby rozwiązać problem pojedynczych liczb, ale nie wiem, jak go użyć na stole.

sessionInfo() R w wersji 2.15.3 (01/03/2013) Platforma: x86_64-W64-mingw32/x64 (64-bit)

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

Który „stół” masz na myśli? Jak to tworzysz? – sgibb

Odpowiedz

11

Separator dziesiętny przez read.table i write.table funkcji (a większość ich krewnych) jest ustawiony na „dec” parametru. read.csv2 to specjalny przypadek, w którym wartością domyślną dla dec jest "," a separator pól ("sep") ustawiony jest na ";".

Możesz można zmienić wyjście z drukowania R, kreślenia i działania funkcji as.character. Zmieniłeś go z domyślnego na:

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

NIE spowoduje to, że R będzie obsługiwał dane numeryczne z konsoli inaczej. To jest zakodowane na "." jako separator dziesiętny.

Jeśli zastosowałeś funkcję tekstową do obiektu tabeli, prawdopodobnie wykonasz wymuszenie z trybu "numerycznego" na "znakowy", ponieważ obiekty tabeli w R dziedziczą z klasy "macierz".

+0

Cudownie !! To jest lepsze niż pierwsza odpowiedź, z którą miałem problemy w niektórych tabelach ... Czy można zmienić znak "udzielono odpowiedzi"? – ap53

+1

Tak, to jest doskonale zaakceptowane, nawet zachęcony, aby zmienić znacznik wyboru. –

2

Dlaczego chcesz użyć” "jako separator dziesiętny, w tym przypadku, jak R będzie interprate tę R wyraz

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

Więc zakładam, że po prostu chcesz zastąpić domyślny separator dziesiętny wydrukować wyjście iw tym przypadku, myślę prettyNum jest odpowiednie narzędzie.

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

Tak, potrzebuję go tylko dla wyjścia. Nigdy wcześniej nie używałam plyr i nie znałam funkcji liczbowej. Dziękuję Ci! – ap53

0

Opierając się na fakcie, że chcesz go używać z (Pandoc) obniżki o ile widzę z blog comment where you referenced this question, Chciałbym również zasugerować, aby dać szansę do mojego 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 
------------------------------------------------------------------- 

lub PHP Przecena Extra składnia dla łatwiejszego użytkowania z 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 | 
Powiązane problemy