\Header{substr}{Extract Substrings from a Character Vector}
\alias{substring}{substr}
\keyword{character}{substr}
\begin{Description}\relax
Extract substrings from a character vector returning a
vector whose elements contain the substring starting with the
character at position \code{start} up to the character at position
\code{stop}.\end{Description}
\begin{Usage}
\begin{verbatim}
substr(x, start, stop)
substring(text, first, last = 1000000)
\end{verbatim}
\end{Usage}
\begin{Details}\relax
If \code{start} is larger than the string length then
\code{\Link{NA}} is returned.
If \code{stop} is longer than \code{start} an error is signalled.

\code{substring} is compatible with S, with \code{first} and
\code{last} instead of \code{start} and \code{stop}.
For vector arguments, it expands the arguments cyclically.\end{Details}
\begin{SeeAlso}\relax
\code{\Link{strsplit}}, \code{\Link{paste}}, \code{\Link{nchar}}.\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
substr("abcdef",2,4)
print(ss <- substring("abcdef",1:6,1:6))
stopifnot(ss == strsplit ("abcdef",NULL)[[1]])# strsplit is more efficient..

substr(rep("abcdef",4),1:4,4:5)
x <- c("asfef", "qwerty", "yuiop[", "b", "stuff.blah.yech")
stopifnot(substr(x, 2, 5) == substring(x, 2, 5))
substr(x, 2, 5)
substring(x, 2, 4:6)
\end{ExampleCode}
\end{Examples}

