[R] Assigning a function to the 'times' argument of rep()
Petr Savicky
savicky at cs.cas.cz
Mon Feb 13 09:24:56 CET 2012
On Sun, Feb 12, 2012 at 07:56:48PM -0800, z2.0 wrote:
> 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:
>
> > perry_frame$zip <- ifelse(nchar(as.character(perry_frame$zip))<5,
>
> 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?
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.
More information about the R-help
mailing list