Peter Dalgaard wrote:
> Rajasekaramya wrote:
>   
>> hi there
>>
>> I have a vector with a set of data.I just wanna seperate them based on the
>> first p and q values metioned within the data.
>>
>> [1] chr10p15.3 /// chr3q29 /// chr4q35 /// chr9q34.3
>> [2] chr1q22-q24                                     
>> [3] chr1q22-q24                                     
>> [4] chr1pter-q24                                    
>> [5] chr1pter-q24                                    
>> [6] chr1pter-q24  
>>
>> i used a regular expression [+q*] to match up the values but it matches q
>> found anywhere i know i have written like that but i jus want it to match
>> the first p or q values.
>>
>> my result should be for q and 
>> [2] chr1q22-q24                                      
>> [3] chr1q22-q24  
>>
>> for p
>> [1] chr10p15.3 /// chr3q29 /// chr4q35 /// chr9q34.3
>> [4] chr1pter-q24                                    
>> [5] chr1pter-q24                                    
>> [6] chr1pter-q24 
>>
>>     
>
> Something like
>
> sub("[^pq]*([pq]).*","\\1",x)
>
> should get you the first p or q
>
>   

and the following will do the whole job (assuming x is your vector):

result = lapply(
   list(p='p', q='q'),
   function(letter)
      grep(paste("^[^pq]*[", "]", sep=letter), x, value=TRUE))

result$p
# those with p first

result$q
# those with q first

vQ

______________________________________________
R-help@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.

Reply via email to