R: Format and interpolate a string

glue {glue} | R Documentation

## Format and interpolate a string

### Description

Expressions enclosed by braces will be evaluated as R code. Long strings are broken by line and concatenated together. Leading whitespace and blank lines from the first and last lines are automatically trimmed.

### Usage

    glue_data(
      .x,
      ...,
      .sep = "",
      .envir = parent.frame(),
      .open = "{",
      .close = "}",
      .na = "NA",
      .transformer = identity_transformer,
      .trim = TRUE
    )

    glue(
      ...,
      .sep = "",
      .envir = parent.frame(),
      .open = "{",
      .close = "}",
      .na = "NA",
      .transformer = identity_transformer,
      .trim = TRUE
    )

### Arguments

`.x` | [`listish`] An environment, list or data frame used to lookup values.
`...` | [`expressions`] Unnamed arguments are taken to be expressions string(s) to format. Multiple inputs are concatenated together before formatting. Named arguments are taken to be temporary variables available for substitution.
`.sep` | [`character(1)`: ‘""’] Separator used to separate elements.
`.envir` | [`environment`: `parent.frame()`] Environment to evaluate each expression in. Expressions are evaluated from left to right. If `.x` is an environment, the expressions are evaluated in that environment and `.envir` is ignored. If `NULL` is passed it is equivalent to `emptyenv()`.
`.open` | [`character(1)`: ‘\{’] The opening delimiter. Doubling the full delimiter escapes it.
`.close` | [`character(1)`: ‘\}’] The closing delimiter. Doubling the full delimiter escapes it.
`.na` | [`character(1)`: ‘NA’] Value to replace NA values with. If `NULL` missing values are propagated, that is an `NA` result will cause `NA` output. Otherwise the value is replaced by the value of `.na`.
`.transformer` | [`function]` A function taking three parameters `code`, `envir` and `data` used to transform the output of each block before during or after evaluation. For example transformers see `vignette("transformers")`.
`.trim` | [`logical(1)`: ‘TRUE’] Whether to trim the input template with `trim()` or not.

### See Also

https://www.python.org/dev/peps/pep-0498/ and https://www.python.org/dev/peps/pep-0257/ upon which this is based.

### Examples

    name <- "Fred"
    age <- 50
    anniversary <- as.Date("1991-10-12")
    glue('My name is {name},',
      'my age next year is {age + 1},',
      'my anniversary is {format(anniversary, "%A, %B %d, %Y")}.')

    # single braces can be inserted by doubling them
    glue("My name is {name}, not {{name}}.")

    # Named arguments can be used to assign temporary variables.
    glue('My name is {name},',
      ' my age next year is {age + 1},',
      ' my anniversary is {format(anniversary, "%A, %B %d, %Y")}.',
      name = "Joe",
      age = 40,
      anniversary = as.Date("2001-10-12"))

    # `glue()` can also be used in user defined functions
    intro <- function(name, profession, country){
      glue("My name is {name}, a {profession}, from {country}")
    }
    intro("Shelmith", "Senior Data Analyst", "Kenya")
    intro("Cate", "Data Scientist", "Kenya")

    # `glue_data()` is useful in magrittr pipes
    library(magrittr)
    mtcars %>% glue_data("{rownames(.)} has {hp} hp")

    # Or within dplyr pipelines
    library(dplyr)
    head(iris) %>%
      mutate(description = glue("This {Species} has a petal length of {Petal.Length}"))

    # Alternative delimiters can also be used if needed
    one <- "1"
    glue("The value of $e^{2\\pi i}$ is $<<one>>$.", .open = "<<", .close = ">>")

[Package glue version 1.4.2 Index]