| tidy_source | R Documentation |
Read R code from a file or the clipboard and reformat it. This function is
based on parse() and deparse(), but it does
several other things, such as preserving blank lines and comments,
substituting the assignment operator = with <-, and
re-indenting code with a specified number of spaces.
tidy_source(
source = "clipboard",
comment = getOption("formatR.comment", TRUE),
blank = getOption("formatR.blank", TRUE),
arrow = getOption("formatR.arrow", FALSE),
pipe = getOption("formatR.pipe", FALSE),
brace.newline = getOption("formatR.brace.newline", FALSE),
indent = getOption("formatR.indent", 4),
wrap = getOption("formatR.wrap", TRUE),
width.cutoff = getOption("formatR.width", getOption("width")),
args.newline = getOption("formatR.args.newline", FALSE),
output = TRUE,
text = NULL,
...
)
source |
A character string: file path to the source code (defaults to the clipboard). |
comment |
Whether to keep comments. |
blank |
Whether to keep blank lines. |
arrow |
Whether to substitute the assignment operator |
pipe |
Whether to substitute the magrittr pipe |
brace.newline |
Whether to put the left brace |
indent |
Number of spaces to indent the code. |
wrap |
Whether to wrap comments to the linewidth determined by
|
width.cutoff |
An integer in |
args.newline |
Whether to start the arguments of a function call on a
new line instead of after the function name and |
output |
Whether to output to the console or a file using
|
text |
An alternative way to specify the input: if |
... |
Other arguments passed to |
A value of the argument width.cutoff wrapped in I()
(e.g., I(60)) will be treated as the upper bound of the line
width. The corresponding argument to deparse() is a lower bound, so
the function will perform a binary search for a width value that can make
deparse() return code with line width smaller than or equal to the
width.cutoff value. If the search fails, a warning will signal,
suppressible by global option options(formatR.width.warning = FALSE).
A list with components
text.tidy |
the reformatted code as a character vector |
text.mask |
the code containing comments, which are masked in assignments or with the weird operator |
.
Be sure to read the reference to know other limitations.
Yihui Xie <https://yihui.org> with substantial contribution from Yixuan Qiu <https://yixuan.blog>
https://yihui.org/formatR/ (an introduction to this package, with examples and further notes)
parse(), deparse()
library(formatR)
## a messy R script
messy = system.file("format", "messy.R", package = "formatR")
tidy_source(messy)
## use the 'text' argument
src = readLines(messy)
## source code
cat(src, sep = "\n")
## the formatted version
tidy_source(text = src)
## preserve blank lines
tidy_source(text = src, blank = TRUE)
## indent with 2 spaces
tidy_source(text = src, indent = 2)
## discard comments!
tidy_source(text = src, comment = FALSE)
## wanna see the gory truth??
tidy_source(text = src, output = FALSE)$text.mask
## tidy up the source code of image demo
x = file.path(system.file(package = "graphics"), "demo", "image.R")
# to console
tidy_source(x)
# to a file
f = tempfile()
tidy_source(x, blank = TRUE, file = f)
## check the original code here and see the difference
file.show(x)
file.show(f)
## use global options
options(comment = TRUE, blank = FALSE)
tidy_source(x)
## if you've copied R code into the clipboard
if (interactive()) {
tidy_source("clipboard")
## write into clipboard again
tidy_source("clipboard", file = "clipboard")
}
## the if-else structure
tidy_source(text = c("{if(TRUE)1 else 2; if(FALSE){1+1", "## comments", "} else 2}"))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.