blob: a431675d1d745f329b951148e2d5fab8f1442eb9 [file] [log] [blame]
% File src/library/base/man/cat.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2014 R Core Team
% Distributed under GPL 2 or later
\name{cat}
\title{Concatenate and Print}
\usage{
cat(\dots , file = "", sep = " ", fill = FALSE, labels = NULL,
append = FALSE)
}
\alias{cat}
\description{
Outputs the objects, concatenating the representations. \code{cat}
performs much less conversion than \code{\link{print}}.
}
\arguments{
\item{\dots}{\R objects (see \sQuote{Details} for the types of objects
allowed).}
\item{file}{A \link{connection}, or a character string naming the file
to print to. If \code{""} (the default), \code{cat} prints to the
standard output connection, the console unless redirected by
\code{\link{sink}}.
#ifdef unix
If it is \code{"|cmd"}, the output is piped to the command given
by \file{cmd}, by opening a pipe connection.
#endif
}
\item{sep}{a character vector of strings to append after each element.}
\item{fill}{a logical or (positive) numeric controlling how the output is
broken into successive lines. If \code{FALSE} (default), only newlines
created explicitly by \samp{"\\n"} are printed. Otherwise, the
output is broken into lines with print width equal to the option
\code{width} if \code{fill} is \code{TRUE}, or the value of
\code{fill} if this is numeric. Non-positive \code{fill} values are
ignored, with a warning.}
\item{labels}{character vector of labels for the lines printed.
Ignored if \code{fill} is \code{FALSE}.}
\item{append}{logical. Only used if the argument \code{file} is the
name of file (and not a connection or \code{"|cmd"}).
If \code{TRUE} output will be appended to
\code{file}; otherwise, it will overwrite the contents of
\code{file}.}
}
\details{
\code{cat} is useful for producing output in user-defined functions.
It converts its arguments to character vectors, concatenates
them to a single character vector, appends the given \code{sep = }
string(s) to each element and then outputs them.
No linefeeds are output unless explicitly requested by \samp{"\\n"}
or if generated by filling (if argument \code{fill} is \code{TRUE} or
numeric).
If \code{file} is a connection and open for writing it is written from
its current position. If it is not open, it is opened for the
duration of the call in \code{"wt"} mode and then closed again.
Currently only \link{atomic} vectors and \link{name}s are handled,
together with \code{NULL} and other zero-length objects (which produce
no output). Character strings are output \sQuote{as is} (unlike
\code{\link{print.default}} which escapes non-printable characters and
backslash --- use \code{\link{encodeString}} if you want to output
encoded strings using \code{cat}). Other types of \R object should be
converted (e.g., by \code{\link{as.character}} or \code{\link{format}})
before being passed to \code{cat}. That includes factors, which are
output as integer vectors.
\code{cat} converts numeric/complex elements in the same way as
\code{print} (and not in the same way as \code{\link{as.character}}
which is used by the S equivalent), so \code{\link{options}}
\code{"digits"} and \code{"scipen"} are relevant. However, it uses
the minimum field width necessary for each element, rather than the
same field width for all elements.
}
\note{
If any element of \code{sep} contains a newline character, it is
treated as a vector of terminators rather than separators, an element
being output after every vector element \emph{and} a newline after the
last. Entries are recycled as needed.
}
\value{
None (invisible \code{NULL}).
}
\references{
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
\emph{The New S Language}.
Wadsworth & Brooks/Cole.
}
\seealso{
\code{\link{print}}, \code{\link{format}}, and \code{\link{paste}}
which concatenates into a string.
}
\examples{
iter <- stats::rpois(1, lambda = 10)
## print an informative message
cat("iteration = ", iter <- iter + 1, "\n")
## 'fill' and label lines:
cat(paste(letters, 100* 1:26), fill = TRUE, labels = paste0("{", 1:10, "}:"))
}
\keyword{print}
\keyword{file}
\keyword{connection}