[R-pkgs] New verion 0.3-7 of gsubfn package

Gabor Grothendieck ggrothendieck at gmail.com
Mon Oct 20 15:45:36 CEST 2008

Version 0.3-7 of the gsubfn package is available on CRAN.
Changes to the package are:

- all known bugs have been fixed.

- in gsubfn and strapply the replacement object can be a
  list (or a function, formula, character string or proto
  object, as before).  In the case of a list, regexp matches
  are looked up in the list names and the corresponding list
  component used.

  # Example 1 - at string end replace M with e6 & G with e9
  gsubfn(".$", list(M = "e6", G = "e9"), c("19G", "32.5M"))

- the backref= argument in gsubfn now defaults to the
  negative of its prior default.  Thus by default if there
  are back references only they and not the entire match is
  passed to the user function.  (Although the changed
  default introduces an incompatibility with prior versions
  this incompatability is small because it only affects
  situations where back references are present in the
  regular expression _and_ backref= was not used. Since the
  previous default for backref= was not useful in that case
  there would be very few, if any, such instances.)  On the
  other hand, it does mean that the backref= argument can be
  omitted most cases now.

For more info, see home page and brief description below.

The gsubfn package - summary

A seemingly small enhancement to R's gsub function, allowing
the replacement string to be a function, formula, list or
proto object gives surprising additional power allowing
parsing of strings by content rather than delimiters.  e.g.
extract numbers:

	# Example 2. Replace each number with its increment
	gsubfn("[0-9]+", ~ as.numeric(x) + 1, "90 and 17")

	# Example 3. extract numbers
	strapply("Over 90 stones in 17 places", "[0-9]+")

The optional function passed to gsubfn and strapply may be
specified using usual R function notation or by a formula
whose left hand side represents the arguments (defaulting to
variables appearing in right hand side) and whose right hand
side represents the body.  In order to extend this
functionality beyond gsubfn and strapply to the rest of R
any R function may be prefaced with fn$ like this:

	# Example 4. Integrate x^2
	fn$integrate(~ x^2, 0, 1)

It also supports quasi-perl style string interpolation:

	# Example 5. Quasi-perl style string interpolation
	fn$cat("pi = $pi and e = `exp(1)`\n")

match.funfn is an alternative to match.fun which allows
developers to add this functionality to their own functions
by simply replacing match.fun with match.funfn -- a one line
change.  In that case even the fn$ prefix is not needed.

More information about the R-packages mailing list