[R] I'm sure I'm missing something with formatC() or sprintf()

William Dunlap wdunlap at tibco.com
Thu Feb 23 20:49:10 CET 2012


sprintf's "%<number>s" format descriptor ignores initial 0's in <number>,
in C's sprintf and in R's.  Here are 2 ways to do it:
  > z <- c("5", "45", "345", "2345", "12345")
  > sprintf("%05d", as.integer(z))
  [1] "00005" "00045" "00345" "02345" "12345"
  > gsub(" ", "0", sprintf("%5s", z))
  [1] "00005" "00045" "00345" "02345" "12345"

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of z2.0
> Sent: Thursday, February 23, 2012 11:16 AM
> To: r-help at r-project.org
> Subject: [R] I'm sure I'm missing something with formatC() or sprintf()
> 
> I have a four-digit string I want to convert to five digits. Take the
> following frame:
> 
> zip
> 2108
> 60321
> 60321
> 22030
> 91910
> 
> I need row 1 to read '02108'. This forum directed me to formatC previously
> (thanks!) That usually works but, for some reason, it's not in this
> instance. Neither of the syntaxes below change '2108' to '02108.' The values
> in cand_receipts[,1] are of type 'character.'
> 
> cand_receipts[,1] <- formatC(cand_receipts[,1], width = 5, format = 's',
> flag = '0')
> cand_receipts[,1] <- sprintf("%05s", cand_receipts[,1])
> 
>  Any thoughts?
> 
> Thanks,
> 
> Zack
> 
> 
> 
> 
> 
> --
> View this message in context: http://r.789695.n4.nabble.com/I-m-sure-I-m-missing-something-with-
> formatC-or-sprintf-tp4414905p4414905.html
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list