| Rtangle {utils} | R Documentation |
R Driver for Stangle
Description
A driver for Stangle that extracts R code chunks.
Usage
Rtangle()
RtangleSetup(file, syntax, output = NULL, annotate = TRUE,
split = FALSE, quiet = FALSE, drop.evalFALSE = FALSE,
chunk.sep = "\n\n", ...)
RtangleRuncode(object, chunk, options)
RtangleWritedoc(object, chunk)
RtangleFinish(object, error = FALSE)
RtangleOptions(options)
Arguments
file |
name of Sweave source file. See the description of the
corresponding argument of |
syntax |
an object of class |
output |
name of output file unless |
annotate |
a logical or |
split |
split output into a file for each code chunk? |
quiet |
logical to suppress all progress messages. |
drop.evalFALSE |
logical. When |
chunk.sep |
character string or logical. Text to use as separator
between code chunks. If |
... |
additional named arguments setting defaults for further options listed in ‘Supported Options’. |
object |
an object created by the |
chunk |
text of a code chunk. |
options |
named list of character strings. |
error |
if |
Details
See RweaveLatex for details on Sweave drivers.
Rtangle is the Stangle driver. RtangleSetup,
RtangleRuncode, RtangleWritedoc, RtangleFinish
and RtangleOptions are functions for the setup,
runcode, writedoc, finish and checkopts
elements of the driver, respectively.
All RtangleSetup arguments may be used as arguments in the
Stangle call.
Unless split = TRUE, the default name of the output file is
basename(file) with an extension corresponding to the Sweave
syntax (e.g., ‘Rnw’, ‘Stex’) replaced by ‘R’. File
names "stdout" and "stderr" are interpreted as the
output and message connection respectively.
If splitting is selected (including by the options in the file), each
chunk is written to a separate file with extension as specified by the
chunk option extension (by default the ‘engine’, usually
‘.R’).
The chunk separator is added before all chunks, except the first one. Therefore, no chunk separator follows the last chunk. No newline (aka ‘line feed’) is added to the value of the argument.
Note that this driver does more than simply extract the code chunks verbatim, because chunks may re-use earlier chunks.
Chunk annotation (annotate)
By default annotate = TRUE, the annotation is of one of the forms
################################################### ### code chunk number 3: viewport ################################################### ################################################### ### code chunk number 18: grid.Rnw:647-648 ################################################### ################################################### ### code chunk number 19: trellisdata (eval = FALSE) ###################################################
using either the chunk label (if present, i.e., when specified in the source) or the file name and line numbers.
annotate may be a function with formal arguments
(options, chunk, output), e.g. to produce less dominant chunk
annotations; see Rtangle()$runcode how it is called instead of
the default.
Supported Options
Rtangle supports the following options for code chunks (the
values in parentheses show the default values). Character string
values should be quoted when passed from Stangle through
... but not when used in the header of a code chunk.
- extension:
logical (TRUE) or character string. Extension to use for the file name, without the leading dot, when
split = TRUE. The default extension is the value of ‘engine’. IfFALSE, no extension is added to the file name.- engine:
character string (
"R"). Only chunks withengineequal to"R"or"S"are processed.- keep.source:
logical (
TRUE). Ifkeep.source == TRUEthe original source is copied to the file. Otherwise, deparsed source is output.- eval:
logical (
TRUE). IfFALSE, the code chunk is copied across but commented out.- ignore.on.tangle:
logical (FALSE). If
TRUE, the code chunk is ignored entirely. Chunks ignored on tangling are not written out to script files, but remain processed normally on weaving (unlessignore = TRUE). Therefore, chunks may still useeval = TRUEfor weaving purposes, yet not be tangled.- ignore:
logical (FALSE). An alternative way to set both
ignore.on.weaveofRweaveLatexandignore.on.tangle.- tangle:
An alternative way to specify
!ignore.on.tangle.- prefix:
Used if
split = TRUE. Seeprefix.string.- prefix.string:
a character string, default is the name of the source file (without extension). Used if
split = TRUEas the prefix for the filename if the chunk has no label, or if it has a label andprefix = TRUE. Note that this is used as part of filenames, so needs to be portable.- show.line.nos
logical (
FALSE). Should the output be annotated with comments showing the line number of the first code line of the chunk?
Option extension is specially useful with ignore.on.weave
= TRUE of RweaveLatex to include code or text that the
engine would not be able to parse.
Note that options may not take their values from objects on tangling, since code chunks are never evaluated. For options set this way for weaving purposes, the driver will use the default value, with a warning.
Author(s)
Friedrich Leisch and R-core, with contributions by Vincent Goulet.
See Also
‘Sweave User Manual’, a vignette in the utils package.
Examples
## Simple example
nmRnw <- "example-1.Rnw"
exfile <- system.file("Sweave", nmRnw, package = "utils")
## Check the contents of the file
if (interactive()) file.show(exfile)
## Tangle the file in the current working directory with the
## default options
Stangle(exfile)
## View the R script
nmR <- sub("Rnw$", "R", nmRnw) # default R output file name
if (interactive()) file.show(nmR)
## Reduce spacing between code chunks to a single blank line
Stangle(exfile, chunk.sep = "\n")
if (interactive()) file.show(nmR)
## Repeat with custom annotations
my.Ann <- function(options, chunk, output) {
cat("### chunk #", options$chunknr, ": ",
options$label %||% .RtangleCodeLabel(chunk),
if (!options$eval) " (eval = FALSE)", "\n",
file = output, sep = "")
}
Stangle(exfile, annotate = my.Ann, chunk.sep = "\n")
if (interactive()) file.show(nmR)
## Options taking their values from objects for weaving
## purposes instead use their default value, with a warning,
## on tangling
nmRnw <- "example-2.Rnw"
exfile <- system.file("Sweave", nmRnw, package = "utils")
if (interactive()) file.show(exfile)
Stangle(exfile)
if (interactive()) file.show(sub("Rnw$", "R", nmRnw))
## More advanced example with finer control of output
nmRnw <- "example-3.Rnw"
exfile <- system.file("Sweave", nmRnw, package = "utils")
if (interactive()) file.show(exfile)
Stangle(exfile)
## Note in the R script: chunk #1 commented out; invalid R
## code in chunks #2, #4 and #5 extracted verbatim; no
## separator between chunks #2 and #3; last chunk left out
## of the script
nmR <- sub("Rnw$", "R", nmRnw)
if (interactive()) file.show(nmR)
## The effect of 'chunk.sep=FALSE' in chunk #3 is more
## interesting without the annotations
Stangle(exfile, annotate = FALSE, chunk.sep = "\n")
if (interactive()) file.show(nmR)
## With 'drop.evalFALSE = TRUE', unevaluated chunks are
## entirely dropped from the tangled script
Stangle(exfile, annotate = FALSE, drop.evalFALSE = TRUE)
if (interactive()) file.show(nmR)
## Tangling with 'split=TRUE' extracts the shell script in
## chunk #4 to a file 'hello.sh', and the text file in
## chunk #5 to a file 'README'
Stangle(exfile, split = TRUE, annotate = FALSE)
if (interactive()) file.show("hello.sh")
if (interactive()) file.show("README")