Rev 41703 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{deparse}\alias{deparse}\title{Expression Deparsing}\description{Turn unevaluated expressions into character strings.}\usage{deparse(expr, width.cutoff = 60,backtick = mode(expr) \%in\% c("call", "expression", "("),control = c("keepInteger", "showAttributes", "keepNA") )}\arguments{\item{expr}{any \R expression.}\item{width.cutoff}{integer in \eqn{[20, 500]} determining the cutoffat which line-breaking is tried.}\item{backtick}{logical indicating whether symbolic names should beenclosed in backticks if they do not follow the standard syntax.}\item{control}{character vector of deparsing options. See\code{\link{.deparseOpts}}.}}\details{This function turns unevaluated expressions (where \dQuote{expression}is taken in a wider sense than the strict concept of a vector of mode\code{"expression"} used in \code{\link{expression}}) into characterstrings (a kind of inverse \code{\link{parse}}).A typical use of this is to create informative labels for data setsand plots. The example shows a simple use of this facility. It usesthe functions \code{deparse} and \code{substitute} to create labelsfor a plot which are character string versions of the actual argumentsto the function \code{myplot}.The default for the \code{backtick} option is not to quote singlesymbols but only composite expressions. This is a compromise toavoid breaking existing code.Using \code{control = "all"} comes closest to making \code{deparse()}an inverse of \code{parse()}. However, not all objects aredeparse-able even with this option and a warning will be issued if thefunction recognizes that it is being asked to do the impossible.Numeric and complex vectors are converted using 15 significant digits:see \code{\link{as.character}} for more details.\code{width.cutoff} is a lower bound for the line lengths: deparsing aline proceeds until at least \code{width.cutoff} \emph{bytes} havebeen output and e.g. \code{arg = value} expressions will not be splitacross lines.}\note{To avoid the risk of a source attribute out of sync with the actualfunction definition, the source attribute of a function will neverbe deparsed as an attribute.}\references{Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)\emph{The New S Language}.Wadsworth \& Brooks/Cole.}\seealso{\code{\link{substitute}},\code{\link{parse}},\code{\link{expression}}.\code{Quotes} for quoting conventions, including backticks.}\examples{require(stats); require(graphics)deparse(args(lm))deparse(args(lm), width = 500)myplot <-function(x, y) {plot(x, y, xlab=deparse(substitute(x)),ylab=deparse(substitute(y)))}e <- quote(`foo bar`)deparse(e)deparse(e, backtick=TRUE)e <- quote(`foo bar`+1)deparse(e)deparse(e, control = "all")}\keyword{programming}\keyword{manip}\keyword{data}