R'deki sayılar için virgül ayırıcı?


100

R'de virgülle ayrılmış büyük sayıları gösterme işlevi var mı?

dan yani 1000000için 1,000,000.


Excel'de kolay ve R'de gülünç derecede karmaşık bir şeyin klasik durumu
Nettle

Yanıtlar:


138

Biçimi veya prettyNum'u deneyebilirsiniz, ancak her iki işlev de bir karakter vektörü döndürür. Bunu sadece baskı için kullanırım.

> prettyNum(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"
> format(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"

DÜZENLEME: Michael Chirico'nun yorumda dediği gibi:

Bunların, yazdırılan dizeleri boşlukla doldurmak gibi yan etkileri olduğunu unutmayın, örneğin:

> prettyNum(c(123,1234),big.mark=",")
[1] "  123" "1,234"

Ekle trim=TRUEiçin formatya preserve.width="none"hiç prettyNumBunu önlemek için:

> prettyNum(c(123,1234),big.mark=",", preserve.width="none")
[1] "123"   "1,234"
> format(c(123,1234),big.mark=",", trim=TRUE)
[1] "123"   "1,234"

5
Bunların, yazdırılan dizeleri boşlukla doldurmak gibi yan etkileri olduğunu unutmayın, örneğin prettyNum(c(123,1234),big.mark=","):; verir " 123" "1,234". eklemek trim=Tiçin formatya preserve.width="none"hiç prettyNumBunu önlemek için.
MichaelChirico

@MichaelChirico Ekstra bilgi için teşekkürler. Bunu cevaba ekledim.
Joris Meys

Ayrıca ondalık basamaklar için de ayar haneleriyseniz, bir vektörünüz varsa, sayılar oldukça farklıysa, bu ters gidebilir. Yardımdan "Sayısal vektörler, tüm öğeleri görüntülemek için gereken minimum ondalık basamak sayısıyla kodlanır. Bununla birlikte, tüm öğelerin sonunda sıfırlar varsa, ondalık basamak sayısı nsmall'a kadar azaltılır"
micstr

1
Yani format(c(12345678,0.001234),big.mark=",", trim=TRUE, digits = 2, scientific = FALSE)"" 12,345,678.0000 "" 0.0012 "verir, böylece yeterince görülebilir. yani, yerler biçimlendirmesi öğe öğe temelinde yapılmaz. Beni yakaladı, bunu paylaşmak istedim.
micstr

scientificArgümanlar arasında hangisinin saklı olduğunu bulmak için epey zaman harcadım format. Teşekkürler!
MichaelChirico


11

Gönderilen diğer cevaplar açıkça işe yarıyor - ama ben her zaman

library(scales)    
comma_format()(1000000)

Comma_format işlevi yalnızca tam sayılarla ilgilenebilir.
Ven Yao

3
Bu çok geç yanıt olduğunu ve geçmişte doğru olabilir comma_formatgerçek sayılar idare etmedi ama şimdi aşağıdakileri yapabilirsiniz: scales::comma_format(digits = 12)(1000000.789)aşağıda sonuçları: "1,000,000.789".
steveb

2
scales :: virgül (1000000) bahsetmeye değer görünüyor.
Joe

3

Bence Joe'nun MatthewR'a yaptığı yorum en iyi yanıtı veriyor ve vurgulanması gerekiyor:

Eylül 2018 itibariyle, scalespaket (parçası Tidyverse) tam olarak şunu yapıyor:

> library(scales)

> x <- 10e5
> comma(x)

[1] "1,000,000"

scalesPaket ile çok güzel oynuyor gibi görünmektedir ggplot2Rakamsal araziler ve grafikler nasıl görüntüleneceğini ince kontrolü için izin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.