R: Concatenate Strings

paste {base} | R Documentation

## Concatenate Strings

### Description

Concatenate vectors after converting to character.

### Usage

    paste (..., sep = " ", collapse = NULL)
    paste0(..., collapse = NULL)

### Arguments

`...` | one or more R objects, to be converted to character vectors.
`sep` | a character string to separate the terms. Not `NA_character_`.
`collapse` | an optional character string to separate the results. Not `NA_character_`.

### Details

`paste` converts its arguments (via `as.character`) to character strings, and concatenates them (separating them by the string given by `sep`). If the arguments are vectors, they are concatenated term-by-term to give a character vector result. Vector arguments are recycled as needed, with zero-length arguments being recycled to `""`.

Note that `paste()` coerces `NA_character_`, the character missing value, to `"NA"` which may seem undesirable, e.g., when pasting two character vectors, or very desirable, e.g. in `paste("the value of p is ", p)`.

`paste0(..., collapse)` is equivalent to `paste(..., sep = "", collapse)`, slightly more efficiently.

If a value is specified for `collapse`, the values in the result are then concatenated into a single string, with the elements being separated by the value of `collapse`.

### Value

A character vector of the concatenated values. This will be of length zero if all the objects are, unless `collapse` is non-NULL in which case it is a single empty string.

If any input into an element of the result is in UTF-8 (and none are declared with encoding `"bytes"`, see `Encoding`), that element will be in UTF-8, otherwise in the current encoding in which case the encoding of the element is declared if the current locale is either Latin-1 or UTF-8, at least one of the corresponding inputs (including separators) had a declared encoding and all inputs were either ASCII or declared.

If an input into an element is declared with encoding `"bytes"`, no translation will be done of any of the elements and the resulting element will have encoding `"bytes"`. If `collapse` is non-NULL, this applies also to the second, collapsing, phase, but some translation may have been done in pasting object together in the first phase.

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

### See Also

`toString` typically calls `paste(*, collapse=", ")`. String manipulation with `as.character`, `substr`, `nchar`, `strsplit`; further, `cat` which concatenates and writes to a file, and `sprintf` for C like string construction.

‘plotmath’ for the use of `paste` in plot annotation.

### Examples

    ## When passing a single vector, paste0 and paste work like as.character.
    paste0(1:12)
    paste(1:12)        # same
    as.character(1:12) # same

    ## If you pass several vectors to paste0, they are concatenated in a
    ## vectorized way.
    (nth <- paste0(1:12, c("st", "nd", "rd", rep("th", 9))))

    ## paste works the same, but separates each input with a space.
    ## Notice that the recycling rules make every input as long as the longest input.
    paste(month.abb, "is the", nth, "month of the year.")
    paste(month.abb, letters)

    ## You can change the separator by passing a sep argument
    ## which can be multiple characters.
    paste(month.abb, "is the", nth, "month of the year.", sep = "_*_")

    ## To collapse the output into a single string, pass a collapse argument.
    paste0(nth, collapse = ", ")

    ## For inputs of length 1, use the sep argument rather than collapse
    paste("1st", "2nd", "3rd", collapse = ", ") # probably not what you wanted
    paste("1st", "2nd", "3rd", sep = ", ")

    ## You can combine the sep and collapse arguments together.
    paste(month.abb, nth, sep = ": ", collapse = "; ")

    ## Using paste() in combination with strwrap() can be useful
    ## for dealing with long strings.
    (title <- paste(strwrap(
        "Stopping distance of cars (ft) vs. speed (mph) from Ezekiel (1930)",
        width = 30), collapse = "\n"))
    plot(dist ~ speed, cars, main = title)

[Package base version 3.5.1 Index]