[R] grep with search terms defined by a variable

Matt Shotwell shotwelm at musc.edu
Tue Aug 3 06:27:53 CEST 2010


Daniel,

If you want to search for each term at the beginning of a sting, using
the regular expression construct '^', you might use the following

> search.terms <- c("Emil", "Meryl") 
> names <- c("Emil Jannings", 
+            "Charles Chaplin", 
+            "Katherine Hepburn", 
+            "Meryl Streep") 
> for(term in search.terms) { 
+     print(grep(paste("^",term,sep=""),names)) 
+ } 
[1] 1
[1] 4

-Matt


On Tue, 2010-08-03 at 00:05 -0400, 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?
> 
> I greatly appreciate any help,
> Daniel
> 
> 
> 
> 

-- 
Matthew S. Shotwell
Graduate Student 
Division of Biostatistics and Epidemiology
Medical University of South Carolina



More information about the R-help mailing list