thisfile {whereami} | R Documentation |
Determines the path of the currently running script in terminal
Description
R does not store nor export the path of the currently running script. This is an attempt to circumvent this limitation by applying heuristics (such as call stack and argument inspection) that work in many cases. CAVEAT: Use this function only if your workflow does not permit other solution: if a script needs to know its location, it should be set outside the context of the script if possible.
Usage
thisfile()
thisfile_source()
thisfile_r()
thisfile_rscript()
thisfile_knit()
Details
This functions currently work only if the script was source
d,
processed with knitr
,
or run with Rscript
or using the --file
parameter to the
R
executable. For code run with Rscript
, the exact value
of the parameter passed to Rscript
is returned.
Value
The path of the currently running script, NULL if it cannot be determined.
Note
These functions were migrated from r-lib/rprojroot.
Author(s)
Kirill Müller, Hadley Wickham, Michael R. Head
References
https://stackoverflow.com/q/1815606/946850
See Also
base::source()
, utils::Rscript()
, base::getwd()
Examples
if( !interactive() )
thisfile()
# using in terminal ( with pipe() )
# open a temp file
tf <- tempfile(fileext = '.R')
# call to write to temp file
f <- 'cat(whereami::thisfile(), "\n", sep = "")'
# write to the file
cat(f,file = tf)
# create an R call to terminal
fcmd <- sprintf('"%s" --slave --vanilla --no-save -f %s',R.home('bin/R'),tf)
# run the call
p <- pipe(fcmd)
# read the output
readLines(p)
# cleanup
close(p)
unlink(tf)