[R] grep with search terms defined by a variable

David Winsemius dwinsemius at comcast.net
Tue Aug 3 12:49:02 CEST 2010


On Aug 3, 2010, at 12:05 AM, Daniel Malter wrote:

>
> Hi, I have a good grasp of grep() and gsub() for finding and  
> extracting
> character strings. However, I cannot figure out how to use a search  
> term
> that is stored in a variable when the search string is more complex.
>
> #Say I have a string, and want to know whether the last name  
> "Jannings" is
> in the string. This is done by
>
> names=c("Emil Jannings")
> grep("Emil",names)
>
> #Yet, I need to store the search terms in a variable, which works  
> for the
> very simple example
>
> search.term="Emil"
> grep(search.term,names)
>
> #but I cannot get it to work for the more difficult example in which  
> I want
> to do something like
>
> grep(^search.term,names)
> grep("^search.term",names)
> grep("^"search.term,names)
>
> #Implying that the search term must be the first part of the string  
> that is
> being searched
>
> #Ultimately, I need to to loop over several strings stored in  
> search.term,
> for example,
>
> names=c("Emil Jannings","Charles Chaplin","Katherine Hepburn","Meryl
> Streep")
> search.term=c("Emil","Meryl")
>
> for(i in 1:length(names)){
>     print(grep(^search.term[i],names))
> }
>
> So the questions I have are two. 1. How do I concatenate terms that  
> I would
> normally quote (like "^") with variables that contain search terms  
> and that
> normally would not be quoted? 2. How do I run this over indices of the
> variable that contains the search terms?

You have gotten answers to both but for the second question there  
exists a loopless alternative. This is implicitly a logical OR  
operations so you could construct a single grep expression with the  
collaps argument to paste:

 > grep( paste("^", search.term, sep="", collapse="|"), names)
[1] 1 4

It may not be quite as flexible because it would not deliver the match  
information in a sequence that aligns with the order of the search  
terms.

-- 
David.
>
> I greatly appreciate any help,
> Daniel
>
>
>
>
> -- 
> View this message in context: http://r.789695.n4.nabble.com/grep-with-search-terms-defined-by-a-variable-tp2311294p2311294.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at 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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list