例如,如果将21690i写入到一个十进制数,则将其作为两位输出(例如,将216901写入到一个十进制数).怎么做到的?

x <- 1.128347132904321674821

编辑:

使用:

options(digits=2)

这是一个可能的答案.有没有办法在脚本中指定一次性使用?当我把它添加到我的脚本中时,它似乎没有做任何不同的事情,而且我对大量重新键入以格式化每个数字不感兴趣(我正在自动生成一个非常大的报告).

--

答案:四舍五入(x,数字=2)

推荐答案

Background:本页建议的一些答案(例如,signifoptions(digits=...))不能保证对任意数字显示一定数量的小数.我认为这是R中的一个设计特征,好的科学实践包括根据"significant figures"原则显示一定数量的数字.然而,在许多领域(例如APA style、业务报告),格式要求要求显示一定数量的小数位数.这通常是出于一致性和标准化的目的,而不是关心重要的数字.

Solution:

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

Discussion of alternatives:

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中的每个ID创建一个新列,其中包含第一个日期的年份

如何做每列报告的最新值的新数据框?

为 facet_grid 中的级别添加唯一的水平线

如何求和每个月和年的值总数并通过 R 中的其他列加入

如果条件在 R 中匹配,则将一列拆分为两个现有列

expss表输出的rbinding表错误

当新列名作为字符向量给出时,在“data.table”中对数据进行分组的好方法

应用 ifelse 而不使用 R 应用 for 循环

在指定时间后无法收敛时停止 Keras

有没有办法初始化或修改允许引用先前值的列表?

根据 R 中的出生年份分组人

如何更有效地使用 map_dfr() 过滤数据集?

如何在 R 中设置错误消息的宽度?

判断线性混合效应模型的正态假设

R:根据特定条件删除重复行

重新创建没有数据的绘图

R中的清理列名

如何从矩数组表中调用名称中包含特定字符串的矩阵?

如何修复“严重符合”的系统发育树以便在 R 中绘制它?

在 R 中拆分包含多个分隔符的字符串