paste {base} | R Documentation |
Concatenate Strings
Description
Concatenate vectors after converting to character.
Concatenation happens in two basically different ways, determined by
collapse
being a string or not.
Usage
paste (..., sep = " ", collapse = NULL, recycle0 = FALSE)
paste0(..., collapse = NULL, recycle0 = FALSE)
Arguments
... |
one or more R objects, to be converted to character vectors. |
sep |
a character string to separate the terms. Not
|
collapse |
an optional character string to separate the results. Not
|
recycle0 |
|
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.
Zero-length arguments are recycled as ""
unless recycle0
is TRUE
and collapse
is NULL
.
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)
## zero length arguments recycled as `""` -- NB: `{}` <==> character(0) here
paste({}, 1:2)
## 'recycle0 = TRUE' allows standard vectorized behaviour, i.e., zero-length
## recycling resulting in zero-length result character(0):
valid <- FALSE
val <- pi
paste("The value is", val[valid], "-- not so good!") # -> ".. value is -- not .."
paste("The value is", val[valid], "-- good: empty!", recycle0=TRUE) # -> character(0)
## When 'collapse = <string>', result is (length 1) string in all cases
paste("foo", {}, "bar", collapse = "|") # |--> "foo bar"
paste("foo", {}, collapse = "|", recycle0 = TRUE) # |--> ""
## If all arguments are empty (and collapse a string), "" results always
paste( collapse = "|")
paste( collapse = "|", recycle0 = TRUE)
paste({}, collapse = "|")
paste({}, collapse = "|", recycle0 = TRUE)