R: Character string with advanced substitutions

GString {R.utils} | R Documentation

## Character string with advanced substitutions

### Description

Package: R.utils
Class GString

`character`
`~~|`
`~~+--``GString`

Directly known subclasses:

public static class GString
extends character

### Usage

    GString(..., sep="")

### Arguments

`...` | one or more objects, to be coerced to `character` vectors.
`sep` | A `character` string to separate the terms.

### Fields and Methods

Methods:

| `as.character` | Gets the processed character string.
| `evaluate` | Parses and evaluates a GString.
| `gcat` | -
| `getBuiltinDate` | Gets the current date.
| `getBuiltinDatetime` | Gets the current date and time.
| `getBuiltinHostname` | Gets the hostname of the system running R.
| `getBuiltinOs` | Gets the operating system of the running machine.
| `getBuiltinPid` | Gets the process id of the current R session.
| `getBuiltinRhome` | Gets the path where R is installed.
| `getBuiltinRversion` | Gets the current R version.
| `getBuiltinTime` | Gets the current time.
| `getBuiltinUsername` | Gets the username of the user running R.
| `getRaw` | Gets the unprocessed GString.
| `getVariableValue` | Gets a variable value given a name and attributes.
| `gstring` | -
| `parse` | Parses a GString.
| `print` | Prints the processed GString.

Methods inherited from character:
Ops,nonStructure,vector-method, Ops,structure,vector-method, Ops,vector,nonStructure-method, Ops,vector,structure-method, all.equal, as.Date, as.POSIXlt, as.data.frame, as.raster, coerce,ANY,character-method, coerce,character,SuperClassMethod-method, coerce,character,signature-method, coerce<-,ObjectsWithPackage,character-method, coerce<-,signature,character-method, downloadFile, formula, getDLLRegisteredRoutines, isOpen, toAsciiRegExprPattern, toFileListTree, uses

### Author(s)

Henrik Bengtsson

### See Also

For convenience, see functions `gstring`() and `gcat`().

### Examples

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # First example
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    who <- "world"

    # Compare this...
    cat(as.character(GString("Hello ${who}\n")))

    # ...to this.
    cat(GString("Hello ${who}\n"))

    # Escaping
    cat(as.character(GString("Hello \\${who}\n")))

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Looping over vectors
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    x <- 1:5
    y <- c("hello", "world")
    cat(as.character(GString("(x,y)=(${x},${y})")), sep=", ")
    cat("\n")

    cat(as.character(GString("(x,y)=(${x},$[capitalize]{y})")), sep=", ")
    cat("\n")

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Predefined ("builtin") variables
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    cat(as.character(GString("Hello ${username} on host ${hostname} running ",
    "R v${rversion} in process #${pid} on ${os}. R is installed in ${rhome}.")))

    # Other built-in variables/functions...
    cat(as.character(GString("Current date: ${date}\n")))
    cat(as.character(GString("Current date: $[format='%d/%m/%y']{date}\n")))
    cat(as.character(GString("Current time: ${time}\n")))

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Evaluating inline R code
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    cat(as.character(GString("Simple calculation: 1+1=${`1+1`}\n")))
    cat(as.character(GString("Alternative current date: ${`date()`}\n")))

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Function values
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Call function rnorm with arguments n=1, i.e. rnorm(n=1)
    cat(as.character(GString("Random normal number: $[n=1]{rnorm}\n")))

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Global search-replace feature
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Replace all '-' with '.'
    cat(as.character(GString("Current date: ${date/-/.}\n")))
    # Another example
    cat(as.character(GString("Escaped string: 12*12=${`12*12`/1/}\n")))

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Defining new "builtin" function values
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Define your own builtin variables (functions)
    setMethodS3("getBuiltinAletter", "GString", function(object, ...) {
      base::letters[runif(1, min=1, max=length(base::letters))]
    })

    cat(as.character(GString("A letter: ${aletter}\n")))
    cat(as.character(GString("Another letter: ${aletter}\n")))

    # Another example
    setMethodS3("getBuiltinGstring", "GString", function(object, ...) {
      # Return another GString.
      GString("${date} ${time}")
    })

    cat(as.character(GString("Advanced example: ${gstring}\n")))

    # Advanced example
    setMethodS3("getBuiltinRunif", "GString", function(object, n=1, min=0, max=1, ...) {
      formatC(runif(n=n, min=min, max=max), ...)
    })

    cat(as.character(GString("A random number: ${runif}\n")))
    n <- 5
    cat(as.character(GString("${n} random numbers: ")))
    cat(as.character(GString("$[n=n, format='f']{runif}")))
    cat("\n")

    # Advanced options.
    # Options are parsed as if they are elements in a list, e.g.
    #   list(n=runif(n=1,min=1,max=5), format='f')
    cat(as.character(GString("$Random number of numbers: ")))
    cat(as.character(GString("$[n=runif(n=1,min=1,max=5), format='f']{runif}")))
    cat("\n")

[Package R.utils version 2.7.0 Index]