[R] sprintf does not fill with "0"?!

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Mon Sep 15 23:54:39 CEST 2008


2008/9/15 Oliver Bandel <oliver at first.in-berlin.de>:

>> sprintf("%03s", as.character(1:5))
> [1] "  1" "  2" "  3" "  4" "  5"
>>
> =================================================================
>
> There should be a leading "0" isntead of space-chars?!
>

 In R, sprintf is a wrapper for the C printf functions, and if you
read the C man page it says this about the 0 prefix:

0
The value should be zero padded. For d, i, o, u, x, X, a, A, e, E, f,
F, g, and G conversions, the converted value is padded on the left
with zeros rather than blanks. If the 0 and - flags both appear, the 0
flag is ignored. For other conversions, the behavior is undefined.

Interestingly R seems to pad with spaces (like yours), but my cygwin C
version pads with zeroes. Such is the nature of undefined behaviour!

Barry



More information about the R-help mailing list