[R] String manipulation

David Winsemius dwinsemius at comcast.net
Sun Jun 26 17:15:14 CEST 2011


On Jun 26, 2011, at 10:54 AM, Megh Dal wrote:

> Dear all, I have following kind of character vector:
>
> Vec <- c("344426", "dwjjsgcj", "123sgdc", "aagha123", "sdh343asgh",  
> "123jhd51")
>
>
> Now I want to split each element of this vector according to numeric  
> and string element. For example in the 1st element of that vector,  
> there is no string element. Therefore I should get a vector of  
> length 2 like c("", "344426") and so on.
>
> Can somebody point me how to achieve that in R? Is there any  
> specific function for doing that?

?regex
?strsplit

You don't do a very good job of describing your desired output, so  
this is two versions of what I am guessing that to be:

 > cbind(lapply(strsplit(Vec, "[^0-9]+"), paste, collapse=""),
+       lapply(strsplit(Vec, "[0-9]+"), paste, collapse="") )
      [,1]     [,2]
[1,] "344426" ""
[2,] ""       "dwjjsgcj"
[3,] "123"    "sgdc"
[4,] "123"    "aagha"
[5,] "343"    "sdhasgh"
[6,] "12351"  "jhd"

 > data.frame(numbits=unlist(lapply(strsplit(Vec, "[^0-9]+"), paste,  
collapse="")),
+       alphabits=unlist(lapply(strsplit(Vec, "[0-9]+"), paste,  
collapse="")) )
   numbits alphabits
1  344426
2          dwjjsgcj
3     123      sgdc
4     123     aagha
5     343   sdhasgh
6   12351       jhd

-- 
David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list