[R-SIG-Mac] Unexpected behavior from sprintf()

Simon Urbanek simon.urbanek at r-project.org
Tue Apr 24 23:12:52 CEST 2012


On Apr 24, 2012, at 4:24 PM, Joran Elias wrote:

> I stumbled across this by accident from this StackOverflow question:
> 
> http://stackoverflow.com/q/10300325/324364
> 
> and a subsequent discussion in the StackOverflow R chat room:
> 
> http://chat.stackoverflow.com/transcript/message/3431991#3431991
> 
> The issue is the output from the following code:
> 
> sprintf('%05s',as.character(1:5))
> 
> It appears that when this is run in OS X in either 2.14.2 or 2.15.0, the
> output is:
> 
> [1] "00001" "00002" "00003" "00004" "00005"
> 
> whereas when it is run on other platforms (I saw examples from various
> Windows versions and one user on Ubuntu, all using 2.15.0 I believe) you
> get:
> 
> [1] "    1" "    2" "    3" "    4" "    5"
> 
> There was some uncertainty as to which behavior is "expected".

The behavior of "%0s" is undefined -- this is documented both by R and POSIX (arguably more clearly in the latter), so any behavior should be expected.


> Does anyone
> have any insight into which behavior is "correct" and whether this is a bug
> or not?
> 

It is not a bug. The formatting is done by the OS, so the results are always OS-dependent -- since %0s is undefined, the OS can choose to interpret it any way it wants.

Cheers,
Simon



More information about the R-SIG-Mac mailing list