Dear developeRs,
I thought that backslashes can be escaped in the usual way (and I think I
did this before) but I can't see why
R> gsub("\\", "x", "\alpha")
Error in gsub(pattern, replacement, x, ignore.case, extended, fixed,
useBytes) :
invalid regular expression '\'
gives an error. Or am I just blind?
Best,
Torsten
R> version
_
platform i686-pc-linux-gnu
arch i686
os linux-gnu
system i686, linux-gnu
status Under development (unstable)
major 2
minor 4.0
year 2006
month 04
day 18
svn rev 37840
language R
version.string R version 2.4.0 Under development (unstable) (2006-04-18
r37840)
gsub + backslashes
5 messages · Torsten Hothorn, Simon Urbanek, Gabor Grothendieck +2 more
On Apr 24, 2006, at 10:23 AM, Torsten Hothorn wrote:
Dear developeRs,
I thought that backslashes can be escaped in the usual way (and I
think I
did this before) but I can't see why
R> gsub("\\", "x", "\alpha")
Error in gsub(pattern, replacement, x, ignore.case, extended, fixed,
useBytes) :
invalid regular expression '\'
gives an error. Or am I just blind?
In REs you need to escape backslashes, so you need double-escaping:
one for the R string representation and one for the RE:
> gsub("\\\\", "x", "\\alpha")
[1] "xalpha"
For illustration purposes:
> cat("\\\\")
\\
> cat("\alpha")
lpha
> cat("\\alpha")
\alpha
Cheers,
Simon
\ is a special character in regular expressions so you need to
escape it as \\ but putting \\ between quotes give you only \
so you need \\\\ to get \\. Any of these would work:
gsub("\\\\", "x", "\\alpha")
gsub("[\\]", "x", "\\alpha")
sub(".", "x", "\\alpha") # assumes \ is first character
gsub("\\", "x", "\\alpha", fixed = TRUE)
chartr("\\", "x", "\\alpha")
On 4/24/06, Torsten Hothorn <Torsten.Hothorn at rzmail.uni-erlangen.de> wrote:
Dear developeRs,
I thought that backslashes can be escaped in the usual way (and I think I
did this before) but I can't see why
R> gsub("\\", "x", "\alpha")
Error in gsub(pattern, replacement, x, ignore.case, extended, fixed,
useBytes) :
invalid regular expression '\'
gives an error. Or am I just blind?
Best,
Torsten
R> version
_
platform i686-pc-linux-gnu
arch i686
os linux-gnu
system i686, linux-gnu
status Under development (unstable)
major 2
minor 4.0
year 2006
month 04
day 18
svn rev 37840
language R
version.string R version 2.4.0 Under development (unstable) (2006-04-18
r37840)
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
On Mon, 24 Apr 2006, Torsten Hothorn wrote:
Dear developeRs,
I thought that backslashes can be escaped in the usual way (and I think I
did this before) but I can't see why
R> gsub("\\", "x", "\alpha")
Error in gsub(pattern, replacement, x, ignore.case, extended, fixed,
useBytes) :
invalid regular expression '\'
gives an error. Or am I just blind?
Escape for R and escape for regexp:
gsub("\\\\", "x", "\\alpha")
[1] "xalpha"
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
On Mon, 24 Apr 2006, Prof Brian Ripley wrote:
On Mon, 24 Apr 2006, Torsten Hothorn wrote:
Dear developeRs,
I thought that backslashes can be escaped in the usual way (and I think I
did this before) but I can't see why
R> gsub("\\", "x", "\alpha")
Error in gsub(pattern, replacement, x, ignore.case, extended, fixed,
useBytes) :
invalid regular expression '\'
gives an error. Or am I just blind?
Escape for R and escape for regexp:
gsub("\\\\", "x", "\\alpha")
[1] "xalpha"
Also, unless fixed==TRUE, you need to double the backslash
in the replacement string (because \\<digit|U|L> has a special
meaning when fixed!=TRUE):
> cat(gsub("/", "\\\\", "C:/Program Files/R"),"\n")
C:\Program Files\R
> cat(gsub("/", "\\", "C:/Program Files/R", fixed=T), "\n")
C:\Program Files\R
----------------------------------------------------------------------------
Bill Dunlap
Insightful Corporation
bill at insightful dot com
360-428-8146
"All statements in this message represent the opinions of the author and do
not necessarily reflect Insightful Corporation policy or position."