Hi, I'd like to know if it is possible to use wildcards * for indexing... E.g. I have a vector of strings. Now I'd like to select all elements which start with A_*? I'd also need to combine that with logical operators: "Select all elements of a vector that start with A (A*) OR that start with B (B*)" Probably that is quite easy. I looked into grep() which I think might perform such tasks, but probably there is a more straigth forward solution. a <- c("A_A","A_B","C_A","BB","A_Asd") a[a=="A_A"| a=="A_B"] # here I'd like an index but with wildcard /johannes --
On 14/02/2012 9:54 AM, Johannes Radinger wrote:> Hi, > > I'd like to know if it is possible to use wildcards * for indexing... > E.g. I have a vector of strings. Now I'd like to select all elements > which start with A_*? I'd also need to combine that with logical operators: > > "Select all elements of a vector that start with A (A*) OR that start with B (B*)" > > Probably that is quite easy. I looked into grep() which I think might perform such tasks, but probably there is a more straigth forward solution. > > a<- c("A_A","A_B","C_A","BB","A_Asd") > a[a=="A_A"| a=="A_B"] # here I'd like an index but with wildcardTry grepl(): a[grepl("^[AB]", a)] is probably the simplest way for your example. Duncan Murdoch
I think the grep()-family (regular expressions) will be the easiest way to do this, though it sounds like you might prefer grepl() which returns a logical vector: ^[AB] # Starts with either an A or a B ^A_ # Starting with A_ a <- c("A_A","A_B","C_A","BB","A_Asd" grepl("^[AB]", a) grepl("^A_") Michael On Tue, Feb 14, 2012 at 9:54 AM, Johannes Radinger <JRadinger at gmx.at> wrote:> Hi, > > I'd like to know if it is possible to use wildcards * for indexing... > E.g. I have a vector of strings. Now I'd like to select all elements > which start with A_*? I'd also need to combine that with logical operators: > > "Select all elements of a vector that start with A (A*) OR that start with B (B*)" > > Probably that is quite easy. I looked into grep() which I think might perform such tasks, but probably there is a more straigth forward solution. > > a <- c("A_A","A_B","C_A","BB","A_Asd") > a[a=="A_A"| a=="A_B"] # here I'd like an index but with wildcard > > /johannes > -- > > ______________________________________________ > 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.
Hi, On Tue, Feb 14, 2012 at 9:54 AM, Johannes Radinger <JRadinger at gmx.at> wrote:> Hi, > > I'd like to know if it is possible to use wildcards * for indexing... > E.g. I have a vector of strings. Now I'd like to select all elements > which start with A_*? I'd also need to combine that with logical operators: > > "Select all elements of a vector that start with A (A*) OR that start with B (B*)" > > Probably that is quite easy. I looked into grep() which I think might perform such tasks, but probably there is a more straigth forward solution. > > a <- c("A_A","A_B","C_A","BB","A_Asd") > a[a=="A_A"| a=="A_B"] # here I'd like an index but with wildcardDo you want elements that start with A or B, as you state above, or elements that start with A_A or A_B as here? Either way, this is a job for grepl(), and it is quite easy:> a <- c("A_A","A_B","C_A","BB","A_Asd") > > grepl("^[AB]", a)[1] TRUE TRUE FALSE TRUE TRUE> grepl("^A_[AB]", a)[1] TRUE TRUE FALSE FALSE TRUE Sarah -- Sarah Goslee http://www.functionaldiversity.org