Hi all, Trying to use an apply to add leading zeros to a set of values in a given vector. I only want to add enough zeros so that the total number of characters is 5, so if I have an element "1" i want "00001" or "9000" I want "09000". I tried vec <- 1:1000 sapply(vec, FUN = sprintf(paste("%0",(5-nchar(x)),"d",sep=""),x)) but she doesnt work. I struggle with the apply family for sure. Thanks Josh -- View this message in context: http://r.789695.n4.nabble.com/add-leading-zeros-tp4638031.html Sent from the R help mailing list archive at Nabble.com.
Hi Josh, Check ?formatC and ?sprintf for some options. Regards, Jorge.- Sent from my phone. Please excuse my brevity and misspelling. On Jul 27, 2012, at 12:49 AM, LCOG1 <jroll at lcog.org> wrote:> Hi all, > Trying to use an apply to add leading zeros to a set of values in a > given vector. I only want to add enough zeros so that the total number of > characters is 5, so if I have an element "1" i want "00001" or "9000" I want > "09000". I tried > > vec <- 1:1000 > sapply(vec, FUN = sprintf(paste("%0",(5-nchar(x)),"d",sep=""),x)) > > but she doesnt work. I struggle with the apply family for sure. Thanks > > Josh > > > > -- > View this message in context: http://r.789695.n4.nabble.com/add-leading-zeros-tp4638031.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.
Much easier than you think: x <- c(1L, 9000L) sprintf("%05i",x) Best, Michael On Thu, Jul 26, 2012 at 8:08 PM, LCOG1 <jroll at lcog.org> wrote:> Hi all, > Trying to use an apply to add leading zeros to a set of values in a > given vector. I only want to add enough zeros so that the total number of > characters is 5, so if I have an element "1" i want "00001" or "9000" I want > "09000". I tried > > vec <- 1:1000 > sapply(vec, FUN = sprintf(paste("%0",(5-nchar(x)),"d",sep=""),x)) > > but she doesnt work. I struggle with the apply family for sure. Thanks > > Josh > > > > -- > View this message in context: http://r.789695.n4.nabble.com/add-leading-zeros-tp4638031.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.
Hello, Here is a function that I wrote some time ago. # pad with zeros padz <- function(x, width=max(nchar(x)), fill="0") gsub(" ", fill, formatC(x, width=width)) ##------------- test padz( c(1, 10, 100) ) padz(1:10, 4) ##------------- non-sense padz(-5:0, 4) padz(runif(10)) Hope this helps, Rui Barradas Em 27-07-2012 02:08, LCOG1 escreveu:> Hi all, > Trying to use an apply to add leading zeros to a set of values in a > given vector. I only want to add enough zeros so that the total number of > characters is 5, so if I have an element "1" i want "00001" or "9000" I want > "09000". I tried > > vec <- 1:1000 > sapply(vec, FUN = sprintf(paste("%0",(5-nchar(x)),"d",sep=""),x)) > > but she doesnt work. I struggle with the apply family for sure. Thanks > > Josh > > > > -- > View this message in context: http://r.789695.n4.nabble.com/add-leading-zeros-tp4638031.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.
HI Rui, Not sure how to place the "-" before the zeros. padz(-5:0,4) [1] "00-5" "00-4" "00-3" "00-2" "00-1" "0000" ?padz(-(5:0),4) [1] "00-5" "00-4" "00-3" "00-2" "00-1" "0000" ?formatC(-5:0,width=4,format="d",flag="0") [1] "-005" "-004" "-003" "-002" "-001" "0000" padz(1:-10,4) ?[1] "0001" "0000" "00-1" "00-2" "00-3" "00-4" "00-5" "00-6" "00-7" "00-8" [11] "00-9" "0-10" ?formatC(1:-10,width=4,format="d",flag="0") ?[1] "0001" "0000" "-001" "-002" "-003" "-004" "-005" "-006" "-007" "-008" [11] "-009" "-010" A.K. ----- Original Message ----- From: Rui Barradas <ruipbarradas at sapo.pt> To: LCOG1 <jroll at lcog.org> Cc: r-help <r-help at r-project.org> Sent: Friday, July 27, 2012 7:03 AM Subject: Re: [R] add leading zeros Hello, Here is a function that I wrote some time ago. # pad with zeros padz <- function(x, width=max(nchar(x)), fill="0") ? ? gsub(" ", fill, formatC(x, width=width)) ##------------- test padz( c(1, 10, 100) ) padz(1:10, 4) ##------------- non-sense padz(-5:0, 4) padz(runif(10)) Hope this helps, Rui Barradas Em 27-07-2012 02:08, LCOG1 escreveu:> Hi all, >? ? ? Trying to use an apply to add leading zeros to a set of values in a > given vector.? I only want to add enough zeros so that the total number of > characters is 5, so if I have an element "1" i want "00001" or "9000" I want > "09000".? I tried > > vec <- 1:1000 > sapply(vec, FUN = sprintf(paste("%0",(5-nchar(x)),"d",sep=""),x)) > > but she doesnt work.? I struggle with the apply family for sure.? Thanks > > Josh > > > > -- > View this message in context: http://r.789695.n4.nabble.com/add-leading-zeros-tp4638031.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.______________________________________________ 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.
This solution was the most elegant. Thanks everyone. Josh -----Original Message----- From: R. Michael Weylandt [mailto:michael.weylandt at gmail.com] Sent: Thursday, July 26, 2012 9:55 PM To: ROLL Josh F Cc: r-help at r-project.org Subject: Re: [R] add leading zeros Much easier than you think: x <- c(1L, 9000L) sprintf("%05i",x) Best, Michael On Thu, Jul 26, 2012 at 8:08 PM, LCOG1 <jroll at lcog.org> wrote:> Hi all, > Trying to use an apply to add leading zeros to a set of values in > a given vector. I only want to add enough zeros so that the total > number of characters is 5, so if I have an element "1" i want "00001" > or "9000" I want "09000". I tried > > vec <- 1:1000 > sapply(vec, FUN = sprintf(paste("%0",(5-nchar(x)),"d",sep=""),x)) > > but she doesnt work. I struggle with the apply family for sure. > Thanks > > Josh > > > > -- > View this message in context: > http://r.789695.n4.nabble.com/add-leading-zeros-tp4638031.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.