R中数字的逗号分隔符?


99

R中是否有一个功能可以显示大量用逗号分隔的数字?

即,从10000001,000,000


在Excel中容易实现而在R中非常复杂的经典案例
Nettle

Answers:


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"

编辑:正如迈克尔·奇里科在评论中所说:

请注意,这具有将打印的字符串用空格填充的副作用,例如:

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

添加trim=TRUEformatpreserve.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=Tformatpreserve.width="none"prettyNum防止这种情况。
MichaelChirico 2015年

@MichaelChirico感谢您的额外信息。我已将其添加到答案中。
乔里斯·梅斯

请注意,如果您还为小数位设置数字,则如果有矢量,则如果数字不相同,则可能会出错。从帮助“数值向量被编码为显示所有元素到最少有效位数至少要显示的小数位数。但是,如果所有元素都具有尾随零,则小数位数会减少到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只能处理整数。
姚瑶2015年

3
这是一个很晚的响应,过去可能comma_format没有处理实数,但是现在您可以执行以下操作:scales::comma_format(digits = 12)(1000000.789)结果如下:"1,000,000.789"
Steveb

2
scales :: comma(1000000)似乎值得一提。

3

我认为Joe对MatthewR的评论提供了最佳答案,应该强调:

截至2018年9月,该scales软件包(的一部分Tidyverse)正是这样做的:

> library(scales)

> x <- 10e5
> comma(x)

[1] "1,000,000"

scales软件包与的结合使用看起来非常不错ggplot2,可以很好地控制图形和图表中数字的显示方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.