Run a block or expression temporarily under a different here() root.
This is useful if you need to source R code from another project for example (as might be the case with git submodules)
You can install the development version of wither from GitHub with:
# install.packages("pak")
# pak::pak("torbjorn/wither")
install.packages("wither", repos = c('https://torbjorn.r-universe.dev', 'https://cloud.r-project.org'))
with_here() evaluates an expression under a temporarily different here
root():
library(here)
library(wither)
was <- here()
d <- tempfile()
dir.create(d)
# have here() be somewhere else for an expression
is_now <- with_here(d, here())
stopifnot(normalizePath(was) != normalizePath(is_now))
# clean up
unlink(d, recursive=TRUE)
local_here() evaluates the remainder of a block under a temporarily
different here root():
library(here)
library(wither)
was <- here()
d <- tempfile()
dir.create(d)
local({
# have here() be somewhere else for the rest of the block
local_here(d)
is_now <- here()
stopifnot(normalizePath(was) != normalizePath(is_now))
})
# clean up
unlink(d, recursive=TRUE)