Skip to content

Assigning a function to the 'times' argument of rep()

5 messages · z2.0, Jorge I Velez, Berend Hasselman +1 more

#
Question: 

I'm trying to use paste() with rep() to reformat a series of values as zip
codes. e.g., if column 1 looks like:

52775
83111
99240
4289
112
57701
20001

I want rows 4 and 5 to read,

"04289"
"00112"

My thought was this:
paste(rep("0",times=(5-nchar(as.character(perry_frame$zip)))),perry_frame$zip,sep=''),
  as.character(perry_frame$zip))

But R throws the following:

Error in rep("0", times = (5 - nchar(as.character(perry_frame$zip)))) : 
  invalid 'times' argument

Is there a reason this doesn't work?

Thanks,

Zack

--
View this message in context: http://r.789695.n4.nabble.com/Assigning-a-function-to-the-times-argument-of-rep-tp4382849p4382849.html
Sent from the R help mailing list archive at Nabble.com.
#
On 13-02-2012, at 04:56, z2.0 wrote:

            
This might help

x <- c(52775, 83111, 99240, 4289, 112, 57701, 20001)
[1] "52775" "83111" "99240" "04289" "00112" "57701" "20001"

Berend
#
On 13-02-2012, at 06:37, Berend Hasselman wrote:

            
or

sprintf("%05d", x)

Berend
#
On Sun, Feb 12, 2012 at 07:56:48PM -0800, z2.0 wrote:
Hi.

Working solutions were suggested by others. The answer
to your question is that "times" argument should either
be a single number or a vector of the same length as the
first argument. However,

  "0" has length 1

  5 - nchar(as.character(perry_frame$zip))
  [1] 0 0 0 1 2 0 0

Hope this helps.

Petr Savicky.