我正在寻找像sprintf
这样的R函数,它可以轻松地格式化小数点两边的输出。我知道%04d
适用于整数,%04d
格式化小数点前的十进制数,%04f
格式化小数点后的十进制数,但我似乎无法想象一个优雅的方法每边的格式(幸运的是,我可以想到一些可怕的方式)。有一个简单的方法吗?我想要的输出:
1 becomes 01.00
4.2 becomes 04.20
12.3 becomes 12.30
42.42 remains as is
谢谢!
答案 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()
函数表示字符串的长度(宽度)。