R千分隔符格式

时间:2018-03-03 21:21:48

标签: r

我只想在R中设置一个选项,显示所有带有千位本地化分隔符的数字。

我看到很多帖子涵盖格式 formatC ,但我每次都需要调用该函数。

// using Microsoft.Extensions.Logging.Console;

WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .ConfigureLogging(logging =>
        ...
        logging.AddFilter<ConsoleLoggerProvider>(
                          "Microsoft.AspNetCore.Server.Kestrel",
                          LogLevel.Critical))
    .Build();

必须有一个像数字一样的解决方案,例如

formatC(1:10 * 100000, format="d", big.mark=",")

感谢。

2 个答案:

答案 0 :(得分:3)

正如我的评论中所提到的,我能想到的最简单的方法是在thousands的参数列表和正文中的print.default语句中添加if()选项。 / p>

print.default <- function (x, digits = NULL, quote = TRUE, na.print = NULL, print.gap = NULL, 
                           right = FALSE, max = NULL, useSource = TRUE, thousands = TRUE, ...) 
{
    noOpt <- missing(digits) && missing(quote) && missing(na.print) && 
        missing(print.gap) && missing(right) && missing(max) && 
        missing(useSource) && missing(...)
    if(thousands) {
        return(formatC(x, format="d", big.mark=","))
    }
    .Internal(print.default(x, digits, quote, na.print, print.gap, 
                            right, max, useSource, noOpt))
}

现在我们必须用print换行,但效果很好。

print(1:10 * 100000)
# [1] "100,000"   "200,000"   "300,000"   "400,000"   "500,000"   "600,000"  
# [7] "700,000"   "800,000"   "900,000"   "1,000,000"
print(1:10 * 100000, thousands=FALSE)
# [1] 1e+05 2e+05 3e+05 4e+05 5e+05 6e+05 7e+05 8e+05 9e+05 1e+06

答案 1 :(得分:3)

一个简单的解决方法是定义一个专用函数来打印带有千位分隔符的数字,可以调用它,例如printT()

printT <- function(x) {formatC(x, format="d", big.mark=",")}

示例:

printT(1:10 * 100000)
[1] "100,000"   "200,000"   "300,000"   "400,000"   "500,000"   "600,000"   "700,000"  
[8] "800,000"   "900,000"   "1,000,000"