From bill at insightful.com  Sat Mar 25 21:49:33 2006
From: bill at insightful.com (Bill Dunlap)
Date: Sat, 25 Mar 2006 12:49:33 -0800 (PST)
Subject: [Rd] gsub(replacement="\\X") -> "X", not "\\X"
Message-ID: <Pine.GSO.4.56.0603251237340.21795@octopus>

I would have thought that all 4 of the following
would give the same result (the first):
   > gsub("backslash-X", "\\X", "this is a backslash-X", fixed=T)
   [1] "this is a \\X"
   > gsub("backslash-X", "\\X", "this is a backslash-X", extended=F)
   [1] "this is a X"
   > gsub("backslash-X", "\\X", "this is a backslash-X", extended=T)
   [1] "this is a X"
   > gsub("backslash-X", "\\X", "this is a backslash-X", perl=T)
   [1] "this is a X"
If fixed==F the first "\\" is ignored except if it is followed by a
digit.  In particular, the replacement string must use "\\\\" to insert
a backslash and "\\" by itself is the same as "".  When fixed==T,
replacement="\\" means to insert a backslash.

I've seen code in package:gdata that depends on this behavior but I did
not see it described in help(gsub).  It describes using
replacement="\\<digit>" to put a matched subpattern into the output,
but not the fact that replacement="\\<nondigit>" is equivalent to
replacement="<nondigit>" (but only when fixed==F).

Is that intended or is the help file incomplete?  I'd like to
get Splus's gsub/substituteString in line with R's.

----------------------------------------------------------------------------
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."



[Rd] gsub(replacement="\\X") -> "X", not "\\X"
Bill Dunlap