【发布时间】:2011-04-19 19:42:35
【问题描述】:
R 中有一个函数可以显示用逗号分隔的大数字吗?
即,从1000000 到1,000,000。
【问题讨论】:
-
Excel 中简单而 R 中复杂得离谱的经典案例
标签: r
R 中有一个函数可以显示用逗号分隔的大数字吗?
即,从1000000 到1,000,000。
【问题讨论】:
标签: r
见?format:
> format(1e6, big.mark=",", scientific=FALSE)
[1] "1,000,000"
>
【讨论】:
format(round(mean(c), 2), big.mark=",", scientific=FALSE)
您可以尝试 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"
【讨论】:
prettyNum(c(123,1234),big.mark=",");给" 123" "1,234"。将trim=T 添加到format 或将preserve.width="none" 添加到prettyNum 以防止这种情况发生。
format(c(12345678,0.001234),big.mark=",", trim=TRUE, digits = 2, scientific = FALSE) 给出了 ` "12,345,678.0000" "0.0012" ,所以可以看到足够多的内容。即,场所格式不是逐个元素完成的。抓住了我,所以想分享这个。
format 的参数大海捞针中的scientific。谢谢!
发布的其他答案显然有效 - 但我一直使用
library(scales)
label_comma()(1000000)
【讨论】:
comma_format 不处理实数可能是正确的,但现在您可以执行以下操作:scales::comma_format(digits = 12)(1000000.789) 导致以下结果:"1,000,000.789".
我认为乔对 MatthewR 的评论提供了最好的答案,应该强调一下:
截至 2018 年 9 月,scales 包(Tidyverse 的一部分)正是这样做的:
> library(scales)
> x <- 10e5
> comma(x)
[1] "1,000,000"
scales 包似乎与ggplot2 配合得非常好,可以很好地控制数字在绘图和图表中的显示方式。
【讨论】:
comma() 时,我发现它已被淘汰,取而代之的是label_comma,它返回一个函数而不是一个字符串。我会回到首选prettyNum,即使big.mark="," 不是默认参数,所以我仍然需要每次显式传递它。
scales::label_comma()(1000000)我相信它工作正常。