| LINENO {this.path} | R Documentation |
Line Number of Executing Expression
Description
Get the line number of the executing expression.
Usage
LINENO(n = 0, envir = parent.frame(n + 1),
matchThisEnv = getOption("topLevelEnvironment"),
srcfile = if (n) sys.parent(n) else 0)
Arguments
n, envir, matchThisEnv, srcfile |
See |
Details
LINENO() only works if the expressions have a
srcref.
Scripts run with Rscript do not store their srcref, even when
getOption("keep.source") is TRUE.
For source() and sys.source(), make sure to supply argument
keep.source = TRUE directly, or set options "keep.source" and
"keep.source.pkgs" to TRUE.
For debugSource() in ‘RStudio’, it has no argument keep.source, so set
option "keep.source" to TRUE before calling.
For compiler::loadcmp(), the srcref is never stored for the compiled
code, there is nothing that can be done.
For utils::Sweave(), the srcref is never stored, there is nothing
that can be done.
For knitr::knit(), the srcref is never stored, there is nothing that
can be done. I am looking into a fix.
For package:targets, set option "keep.source" to TRUE before
calling associated functions.
For box::use(), plumber::plumb(), shiny::runApp(), and
testthat::source_file(), the srcref is always stored.
Value
integer; NA_integer_ if the line number is not found.
Note
You can get a more accurate line number by wrapping LINENO() in
braces:
{ LINENO() }
Examples
FILE.R <- tempfile(fileext = ".R")
writeLines(c("
LINENO()
LINENO()
## LINENO() respects #line directives
#line 15
LINENO()
#line 1218
cat(sprintf('invalid value %d at %s, line %d\\n',
-5, try.this.path(), LINENO()))
"), FILE.R)
if (getRversion() >= "4.3.0") {
source(FILE.R, echo = TRUE, verbose = FALSE,
max.deparse.length = Inf, keep.source = TRUE)
} else {
this.path:::.source(FILE.R, echo = TRUE, verbose = FALSE,
max.deparse.length = Inf, keep.source = TRUE)
}
unlink(FILE.R)