[R] vector of character with unequal width

Petr Savicky savicky at praha1.ff.cuni.cz
Fri Jan 7 17:44:09 CET 2011


On Fri, Jan 07, 2011 at 02:55:18PM +0000, jose Bartolomei wrote:
> 
> Dear R users,
>  
> Thanks for your help
> The recomendations were exaclty what I was searching. 
> Bellow the one I will use for my script.
> Thanks again,
> jose
>  
> nchar(xx)
>   [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
>  [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 4 4 4 4 4 4 4 4
>  [75] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
>  
> z1 <- rep("000000000", times=length(xx))
> z2 <- substr(z1, 1, 9 - nchar(xx))
> xx <- paste(z2, xx, sep="")
> xx<-substring(xx, 6, 9)
> nchar(xx)
>  
> [1] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
>  [38] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
>  [75] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

Let me suggest a slightly simpler code, which produces the same
output, if the input has length at most 9.

  xx <- c("abc", "abcd", "abcde")

  xx <- paste("000", xx, sep="")
  xx <- substr(xx, nchar(xx) - 3, nchar(xx))

  cbind(xx)
  #     xx    
  #[1,] "0abc"
  #[2,] "abcd"
  #[3,] "bcde"

Petr Savicky.



More information about the R-help mailing list