Many more recent regular expression implementations have ways of indicating
a match on a word boundary. It's usually \b.
Here's what you did:
gsub(x1, i1, x1 + x2 + x10 + xx1)
[1] i1 + x2 + i10 + xi1
The following worked for me to just change x1 to i1, while leaving
alone any larger word that contains x1:
gsub(\\bx1\\b, i1, x1 + x2 + x10 + xx1)
[1] i1 + x2 + x10 + xx1
Note that the backslash must be escaped itself to get past the R lexical
analyser, which is independent of the regexp processor. What the regexp
processor sees is just a single backslash.
For more on this, look for perl documentation of regular expressions. Be
aware that to use full perl regexps, you must supply the perl=T argument to
gsub(). Also note that \b seems to be part of the most basic regular
expression language in R; it even works with extended=F:
gsub(\\bx1\\b, i1, x1 + x2 + x10 + xx1, perl=T)
[1] i1 + x2 + x10 + xx1
gsub(\\bx1\\b, i1, x1 + x2 + x10 + xx1, perl=F)
[1] i1 + x2 + x10 + xx1
gsub(\\bx1\\b, i1, x1 + x2 + x10 + xx1, perl=F, ext=F)
[1] i1 + x2 + x10 + xx1
(I assumed the fact that you have a matrix of strings is not relevant.)
Hope this helps,
Tony Plate
At Wednesday 09:07 PM 10/27/2004, Kevin Wang wrote:
Hi,
Suppose I've got a matrix, and the first few elements look like
x1 + x3 + x4 + x5 + x1:x3 + x1:x4
x1 + x2 + x3 + x5 + x1:x2 + x1:x5
x1 + x3 + x4 + x5 + x1:x3 + x1:x5
and so on (have got terms from x1 ~ x14).
If I want to replace all the x1 with i7, all x2 with i14, all x3 with i13,
for example. Is there an easy way?
I tried to put what I want to replace in a vector, like:
repl = c(i7, i14, i13, d2, i8, i5,
i6, i3, A, i9, i2,
i4, i15, i21)
and have another vector, say:
orig
[1] x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
[11] x11 x12 x13 x14
Then I tried something like
gsub(orig, repl, mat)
## mat is the name of my matrix
but it didn't work *_*.it would replace terms like x10 with i70.
(I know it may be an easy question...but I haven't done much regular
expression)
Cheers,
Kevin
Ko-Kang Kevin Wang
PhD Student
Centre for Mathematics and its Applications
Building 27, Room 1004
Mathematical Sciences Institute (MSI)
Australian National University
Canberra, ACT 0200
Australia
Homepage: http://wwwmaths.anu.edu.au/~wangk/
Ph (W): +61-2-6125-2431
Ph (H): +61-2-6125-7407
Ph (M): +61-40-451-8301
__
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
__
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html