[R] Matching a character in a string

Paul Hiemstra p.hiemstra at geo.uu.nl
Mon Jan 25 21:55:45 CET 2010


Fabrice DELENTE wrote:
> Hello.
>
> Sorry for this very basic question but I didn't find (of didn't understand)
> the answer either in the help or in the online guide.
>
> I have a string, let's say "hello". I want to know if there is some
> character in it, let's say an 'o'.
>
> I tried
>
>   
>> charmatch("o", strstplit("hello",""))
>>     
>
> but it gives NA (why??)
>
> Thinking it may be a type problem, I tried
>
>   
>> charmatch("o",as.character(strsplit("hello","")))
>>     
>
> but it gives NA too (why???)
>
> So how can I know if a given string contains a given char?
>
> Thanks!
>
>   
try:

grep("o", "hello")

if the output is 1, there is a match. Note that the command is 
vectorized so:

grep("o", c("hello","pizza", "spam", "ogle"))

also works, picking out items 1 and 4 as containing an "o". The first 
argument to grep is a regular expression, and this can be very powerful. 
For example, which words start with a "p":

grep("^p", c("hello","pizza", "spam", "ogle"))

Check out more stuff on regular expressions on the internet. They are 
very powerful, but take some time to learn.

cheers,
Paul

-- 
Drs. Paul Hiemstra
Department of Physical Geography
Faculty of Geosciences
University of Utrecht
Heidelberglaan 2
P.O. Box 80.115
3508 TC Utrecht
Phone:  +3130 274 3113 Mon-Tue
Phone:  +3130 253 5773 Wed-Fri
http://intamap.geo.uu.nl/~paul



More information about the R-help mailing list