read_demo() is a convenience function
to read a demo script from a package.read_chunk(path, lines = readLines(path, warn = FALSE), labels = NULL, from = NULL,
to = NULL, from.offset = 0L, to.offset = 0L)read_demo(topic, package = NULL, ...)
path)NULL)from/todemoread_chunk## ---- chunk-label} (at least four
dashes before the chunk label) in the script; (2) Manually specify the
labels, starting and ending positions of code chunks in the script.The second approach will be used only when labels is not NULL.
For this approach, if from is NULL, the starting position is 1;
if to is NULL, each of its element takes the next element of
from minus 1, and the last element of to will be the length of
lines (e.g. when from = c(1, 3, 8) and the script has 10 lines
in total, to will be c(2, 7, 10)). Alternatively, from
and to can be character vectors as regular expressions to specify the
positions; when their length is 1, the single regular expression will be
matched against the lines vector, otherwise each element of
from/to is matched against lines and the match is
supposed to be unique so that the numeric positions returned from
grep() will be of the same length of from/to. Note
labels always has to match the length of from and to.
cache = FALSE), and the code is read and stored in the
current session without being executed (to actually run the code,
you have to use a chunk with a corresponding label).## ---- my-label ---- 1 + 1 lm(y ~ x, data = data.frame(x = 1:10, y = rnorm(10)))
## later you can use <
## the 2nd approach code = c("#@a", "1+1", "#@b", "#@a", "rnorm(10)", "#@b") read_chunk(lines = code, labels = "foo") # put all code into one chunk named foo read_chunk(lines = code, labels = "foo", from = 2, to = 2) # line 2 into chunk foo read_chunk(lines = code, labels = c("foo", "bar"), from = c(1, 4), to = c(3, 6)) # automatically figure out 'to' read_chunk(lines = code, labels = c("foo", "bar"), from = c(1, 4)) read_chunk(lines = code, labels = c("foo", "bar"), from = "^#@a", to = "^#@b") read_chunk(lines = code, labels = c("foo", "bar"), from = "^#@a", to = "^#@b", from.offset = 1, to.offset = -1)
## later you can use, e.g., <