wither
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)
Installation
You can install the development version of wither from GitHub with:
# install.packages("pak")
pak::pak("torbjorn/wither")
Example
with_here
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
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)