R의 숫자에 대한 쉼표 구분 기호?


99

R에 쉼표로 구분 된 큰 숫자를 표시하는 기능이 있습니까?

에서 즉, 10000001,000,000.


뭔가 쉽게 Excel에서와 안되게 R 복잡의 고전적인 사례
쐐기풀

답변:


134

format 또는 prettyNum을 시도 할 수 있지만 두 함수 모두 문자 벡터를 반환합니다. 나는 그것을 인쇄에만 사용합니다.

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

편집 : Michael Chirico가 코멘트에서 말했듯이 :

다음과 같이 인쇄 된 문자열을 공백으로 채우는 부작용이 있습니다.

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

이를 방지 trim=TRUE하려면 format또는 preserve.width="none"에 추가하십시오 prettyNum.

> 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
인쇄 된 문자열을 공백으로 채우는 부작용이 있습니다 prettyNum(c(123,1234),big.mark=","). 예를 들면 다음과 같습니다 .; 제공합니다 " 123" "1,234". 이를 방지 trim=T하려면 format또는 preserve.width="none"에 추가 prettyNum하십시오.
MichaelChirico

@MichaelChirico 추가 정보에 감사드립니다. 나는 그것을 대답에 추가했습니다.
Joris Meys

소수점 이하 자릿수도 설정하는 경우 벡터가있는 경우 숫자가 상당히 다르면 잘못 될 수 있습니다. 도움말에서 "숫자 벡터는 모든 요소를 ​​최소한 유효 자릿수까지 표시하는 데 필요한 최소 소수 자릿수로 인코딩됩니다. 그러나 모든 요소에 후행 0이 있으면 소수 자릿수는 nsmall까지 감소합니다."
micstr

1
그래서 format(c(12345678,0.001234),big.mark=",", trim=TRUE, digits = 2, scientific = FALSE)` "12,345,678.0000" "0.0012"를 주어 충분히 볼 수 있습니다. 즉 장소 형식화는 요소별로 수행되지 않습니다. 나를 잡아서 이것을 공유하고 싶었습니다.
micstr

scientific에 대한 논쟁의 건초 더미에 숨겨져있는 것을 찾으려고 꽤 많은 시간을 보냈습니다 format. 감사!
MichaelChirico


11

게시 된 다른 답변은 분명히 작동하지만 항상 사용했습니다.

library(scales)    
comma_format()(1000000)

comma_format 함수는 정수만 처리 할 수 ​​있습니다.
Ven Yao

3
이것은 매우 늦은 응답이며, 과거에는 comma_format실수를 처리하지 않았던 것이 사실 일 수 있지만 이제 다음을 수행 할 수 있습니다. scales::comma_format(digits = 12)(1000000.789)결과는 다음과 같습니다 "1,000,000.789"..
steveb

2
scales :: comma (1000000)는 언급 할 가치가있는 것 같습니다.
Joe

3

MatthewR에 대한 Joe의 의견이 최상의 답변을 제공하며 강조되어야한다고 생각합니다.

2018 년 9 월부터 scales패키지 (의 일부 Tidyverse)는 정확히 다음을 수행합니다.

> library(scales)

> x <- 10e5
> comma(x)

[1] "1,000,000"

scales패키지는에서 매우 잘 작동하여 ggplot2플롯과 차트에 숫자가 표시되는 방식을 세밀하게 제어 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.