格式化R中的小数位

我有一个数字,例如1.128347132904321674821,当输出到屏幕(或写入文件)时,我想只显示两位小数。 一个人怎么做?

x <- 1.128347132904321674821 

编辑:

指某东西的用途:

 options(digits=2) 

已被build议作为可能的答案。 有一种方法可以在脚本中指定一次性使用吗? 当我将它添加到我的脚本中时,它似乎没有做任何不同的事情,我不想重新input格式化每个数字(我自动化一个非常大的报告)。

答案:round(x,digits = 2)

背景:在这个页面上build议的一些答案(例如, signifoptions(digits=...) )不能保证显示任意数字的一定数量的小数。 我认为这是R中的一个devise特征,其中好的科学实践包括根据“ 有意义的数字 ”的原则显示一定数量的数字。 但是,在许多领域(例如, APA风格 ,业务报告)格式要求中,都会显示一定数量的小数位数。 这通常是为了一致性和标准化的目的,而不是关心重要人物。

解答

下面的代码显示数字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" 

你可以试试我的包格式表 。

 > # devtools::install_github("renkun-ken/formattable") > library(formattable) > x <- formattable(1.128347132904321674821, digits = 2, format = "f") > x [1] 1.13 

好的是, x仍然是一个数字向量,你可以用相同的格式进行更多的计算。

 > x + 1 [1] 2.13 

更好的是,数字不会丢失,你可以随时用更多的数字重新格式化:)

 > formattable(x, digits = 6, format = "f") [1] 1.128347 

你可以格式化一个数字,比如x ,最多可以input小数点。 这里x是一个有许多小数位的数字。 假设我们希望显示这个数字的小数点后8位:

 x = 1111111234.6547389758965789345 y = formatC(x, digits = 8, format = "f") # [1] "1111111234.65473890" 

这里format="f"给出了通常小数位置的浮点数,例如xxx.xxx, digits指定了位数。 相比之下,如果你想得到一个整数来显示你会使用format="d" (很像sprintf )。

那么,想到的两个是

 fixed(1.128347132904321674821, digits=2) 

或者如果你喜欢siginificant数字固定数字然后;

 signif(1.128347132904321674821,digits=3) 

类似的东西:

 options(digits=2) 

数字选项的定义:

 digits: controls the number of digits to print when printing numeric values. 

检查函数prettyNum,格式

有试用零(例如123.1240)使用sprintf(x, fmt='%#.4g')

函数formatC()可以用来格式化一个数字到两位小数。 即使当结果值包括尾随零时,该函数也给出两位小数。

请注意,R中的数字对象是以双精度存储的,这使得(大致)hex精度的十进制数字 – 其余的将是噪声。 我承认上面显示的数字可能只是一个例子,但它是22位数字。

我使用这个变体来强制打印K个小数位:

 # format numeric value to K decimal places formatDecimal <- function(x, k) format(round(x, k), trim=T, nsmall=k) 

在我看来,会是这样的

 library(tutoR) format(1.128347132904321674821, 2) 

每一点在线帮助 。