格式化功能强制小数点两侧的数字长度

时间:2016-08-19 17:40:02

标签: r

我正在寻找像sprintf这样的R函数,它可以轻松地格式化小数点两边的输出。我知道%04d适用于整数,%04d格式化小数点前的十进制数,%04f格式化小数点后的十进制数,但我似乎无法想象一个优雅的方法每边的格式(幸运的是,我可以想到一些可怕的方式)。有一个简单的方法吗?我想要的输出:

1 becomes 01.00
4.2 becomes 04.20
12.3 becomes 12.30
42.42 remains as is

谢谢!

1 个答案:

答案 0 :(得分:2)

正如@nrussell指出的那样,sprintf()功能就足够了:

sprintf("%05.2f",x)

格式说明符中的序列05.2表示表示为浮点(f)的数字的输出应填充到0的左侧,以便生成的字符串包含至少5个字符,并且小数点后应显示两个数字。

更复杂的版本是将其与str_pad()包中的stringr函数相结合。与仅使用sprintf()的解决方案相比,在这种情况下没有优势。我只是为了完整性而添加它,因为这是我提出的解决方案。

x <- c(1, 4.2, 12.3, 42.42)
stringr::str_pad(sprintf("%.2f",x), 5, pad="0")
#[1] "01.00" "04.20" "12.30" "42.42"

论证&#34; 5&#34;传递给str_pad()函数表示字符串的长度(宽度)。