here {this.path} | R Documentation |
Construct Path to File, Starting With Script's Directory
Description
here()
constructs file paths starting with this.dir()
.
this.proj()
constructs file paths starting with the project root of
this.dir()
.
reset.proj()
resets the path cache of this.proj()
. This can be
useful if you create a new project that you would like to be detected without
restarting your R session.
Usage
here(..., local = FALSE, n = 0,
envir = parent.frame(n + 1),
matchThisEnv = getOption("topLevelEnvironment"),
srcfile = if (n) sys.parent(n) else 0, .. = 0)
this.proj(..., local = FALSE, n = 0,
envir = parent.frame(n + 1),
matchThisEnv = getOption("topLevelEnvironment"),
srcfile = if (n) sys.parent(n) else 0)
reset.proj()
## alias for 'here'
ici(..., local = FALSE, n = 0,
envir = parent.frame(n + 1),
matchThisEnv = getOption("topLevelEnvironment"),
srcfile = if (n) sys.parent(n) else 0, .. = 0)
Arguments
... |
further arguments passed to |
local , n , envir , matchThisEnv , srcfile |
See
|
.. |
the number of directories to go back. |
Details
For this.proj()
, the project root has the same criterion as
here::here()
, but unlike here::here()
, this.proj()
supports sub-projects and multiple projects in use at once. Additionally,
this.proj()
is independent of working directory, whereas
here::here()
relies on the working directory being set somewhere
within the project when package:here is loaded. Arguably, this makes it
better than here::here()
.
Value
A character vector of the arguments concatenated term-by-term.
Examples
tmpdir <- tempfile(pattern = "dir")
dir.create(tmpdir)
writeLines("this file signifies that its directory is the project root",
this.path::path.join(tmpdir, ".here"))
FILE.R <- this.path::path.join(tmpdir, "src", "R", "script1.R")
dir.create(this.path::dirname2(FILE.R), recursive = TRUE)
this.path:::.writeCode({
this.path::this.path()
this.path::this.proj()
## use 'here' to run another script located nearby
this.path::here("script2.R")
## or maybe to read input from a file
this.path::here(.. = 2, "input", "data1.csv")
## but sometimes it is easier to use the project root
## this allows you to move the R script up or down
## a directory without changing the .. number
this.path::this.proj("input", "data1.csv")
}, FILE.R)
source(FILE.R, echo = TRUE)
unlink(tmpdir, recursive = TRUE)