I am having some trouble learning regular expressions. Let me describe the general problem I am dealing with. Consider the following setup: Joe<- c(1,2,3) Bob<- c(2,4,6) Alice <- c(9,8,7) Matrix <- cbind(Joe, Bob, Alice) St <- c("Bob", "Alice", "Alice:Bob") Now I want to make a new matrix having only the column's listed in St that were in Matrix (which I can do). However, In addition for elements of the form "Alice:Bob" I want to make a new column in my new matrix with the product of these columns. I am not sure if a semicolon is a valid symbol for a column name, if not we can replace it with something like qqq. I have been reading over various post on regular expressions, but really haven't made any progress. As far as I can tell there aren't standard string functions in R. (Also, as an aside, is there a wildcard character in R? I'd want something so if x="Bob" a statment of the form x== "B*b" would evaluate true where * is the wildcard.) Any help would be appreciated! (also, thanks again to those who helped on my last question!)
On 19.04.2008, at 06:46, maud wrote:> I am having some trouble learning regular expressions. Let me describe > the general problem I am dealing with. Consider the following setup: > > Joe<- c(1,2,3) > Bob<- c(2,4,6) > Alice <- c(9,8,7) > > Matrix <- cbind(Joe, Bob, Alice) > St <- c("Bob", "Alice", "Alice:Bob") > [...] > I have been reading over various post on regular expressions, but > really haven't made any progress. As far as I can tell there aren't > standard string functions in R. (Also, as an aside, is there a > wildcard character in R? I'd want something so if x="Bob" a statment > of the form x== "B*b" would evaluate true where * is the wildcard.)I'm not really sure if I understood you correctly. If you're looking for a way to match St against something like "B*b" you can make usage of normal regular expressions (like grep()). For details begin with ?regexp and ?grep Then you can try for instance: grep("B.b", St) to get [1] 1 3 (the indices of the vector St) or directly St[grep("B.b", St)] Cheers, --Hans