deparse {base} | R Documentation |
Turn unevaluated expressions into character strings.
deparse(expr, width.cutoff = 60L, backtick = mode(expr) %in% c("call", "expression", "(", "function"), control = c("keepNA", "keepInteger", "niceNames", "showAttributes"), nlines = -1L) deparse1(expr, collapse = " ", width.cutoff = 500L, ...)
expr |
any R expression. |
width.cutoff |
integer in [20, 500] determining the cutoff (in bytes) at which line-breaking is tried. |
backtick |
logical indicating whether symbolic names should be enclosed in backticks if they do not follow the standard syntax. |
control |
character vector (or |
nlines |
integer: the maximum number of lines to produce. Negative values indicate no limit. |
collapse |
a string, passed to |
... |
further arguments passed to |
These functions turn unevaluated expressions (where ‘expression’
is taken in a wider sense than the strict concept of a vector of
mode
and type (typeof
)
"expression"
used in expression
) into character
strings (a kind of inverse to parse
).
A typical use of this is to create informative labels for data sets
and plots. The example shows a simple use of this facility. It uses
the functions deparse
and substitute
to create labels
for a plot which are character string versions of the actual arguments
to the function myplot
.
The default for the backtick
option is not to quote single
symbols but only composite expressions. This is a compromise to
avoid breaking existing code.
Using control = c("all", "hexDigits")
comes closest to making deparse()
an inverse of parse()
(but we have not yet seen an example where
"all"
, now including "digits17"
, would not have been as
good). However, not all objects are deparse-able even with these options
and a warning will be issued if the function recognizes that it is being
asked to do the impossible.
Unless control
contains "digits17"
or "hexDigits"
,
(or "all"
or "exact"
which include one of these), numeric
and complex vectors are converted using 15 significant digits:
see as.character
for more details.
width.cutoff
is a lower bound for the line lengths: deparsing a
line proceeds until at least width.cutoff
bytes have
been output and e.g. arg = value
expressions will not be split
across lines.
deparse1()
is a simple utility added in R 4.0.0 to ensure a
string result (character
vector of length one),
typically used in name construction, as
deparse1(substitute(.))
.
To avoid the risk of a source attribute out of sync with the actual function definition, the source attribute of a function will never be deparsed as an attribute.
Deparsing internal structures may not be accurate: for example the
graphics display list recorded by recordPlot
is not
intended to be deparsed and .Internal
calls will be shown as
primitive calls.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
.deparseOpts
for available control
settings;
dput()
and dump()
for related functions using
identical internal deparsing functionality.
substitute
,
parse
,
expression
.
Quotes
for quoting conventions, including backticks.
require(stats); require(graphics) deparse(args(lm)) deparse(args(lm), width.cutoff = 500) myplot <- function(x, y) { plot(x, y, xlab = deparse1(substitute(x)), ylab = deparse1(substitute(y))) } e <- quote(`foo bar`) deparse(e) deparse(e, backtick = TRUE) e <- quote(`foo bar`+1) deparse(e) deparse(e, control = "all") # wraps it w/ quote( . )