gpt4 book ai didi

r - 格式化R中的小数位

转载 作者:bug小助手 更新时间:2023-10-28 10:41:58 25 4
gpt4 key购买 nike

我有一个数字,例如 1.128347132904321674821,我希望在输出到屏幕(或写入文件)时仅显示两位小数。如何做到这一点?

x <- 1.128347132904321674821

编辑:

用途:

options(digits=2)

已被建议作为可能的答案。有没有办法在脚本中指定它以供一次性使用?当我将它添加到我的脚本中时,它似乎没有做任何不同的事情,而且我对大量重新输入以格式化每个数字不感兴趣(我正在自动化一个非常大的报告)。

--

答案:round(x, digits=2)

最佳答案

背景:此页面上建议的一些答案(例如,signifoptions(digits=...))并不保证为任意数字显示一定数量的小数。我认为这是 R 中的一个设计功能,良好的科学实践涉及根据“significant figures”的原则显示一定数量的数字。但是,在许多领域(例如,APA style,业务报告)中,格式要求要求显示一定数量的小数位。这样做通常是出于一致性和标准化目的,而不是关注重要数字。

解决方案:

以下代码正好显示数字 x 的两位小数。

format(round(x, 2), nsmall = 2)

例如:

format(round(1.20, 2), nsmall = 2)
# [1] "1.20"
format(round(1, 2), nsmall = 2)
# [1] "1.00"
format(round(1.1234, 2), nsmall = 2)
# [1] "1.12"

更通用的函数如下,其中 x 是数字,k 是要显示的小数位数。 trimws 删除任何前导空格,如果您有一个数字向量,这可能会很有用。

specify_decimal <- function(x, k) trimws(format(round(x, k), nsmall=k))

例如,

specify_decimal(1234, 5)
# [1] "1234.00000"
specify_decimal(0.1234, 5)
# [1] "0.12340"

替代方案的讨论:

formatC answerssprintf answers工作得很好。但在某些情况下,它们会显示负零,这可能是不需要的。即,

formatC(c(-0.001), digits = 2, format = "f")
# [1] "-0.00"
sprintf(-0.001, fmt = '%#.2f')
# [1] "-0.00"

一种可能的解决方法如下:

formatC(as.numeric(as.character(round(-.001, 2))), digits = 2, format = "f")
# [1] "0.00"

关于r - 格式化R中的小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3443687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com