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