getRelative {reproducible} | R Documentation |
Relative paths
Description
Extracting relative file paths.
Usage
getRelative(path, relativeToPath)
makeRelative(files, absoluteBase)
Arguments
path |
character vector or list specifying file paths |
relativeToPath |
directory against which |
files |
character vector or list specifying file paths |
absoluteBase |
base directory (as absolute path) to prepend to |
Details
-
getRelative()
searchespath
"from the right" (instead of "from the left") and tries to reconstruct it relative to directory specified byrelativeToPath
. This is useful when dealing with symlinked paths. -
makeRelative()
checks to see iffiles
andnormPath(absoluteBase)
share a common path (i.e., "from the left"), otherwise it returnsfiles
.
Examples
## create a project directory (e.g., on a hard drive)
(tmp1 <- tempdir2("myProject", create = TRUE))
## create a cache directory elsewhere (e.g., on an SSD)
(tmp2 <- tempdir2("my_cache", create = TRUE))
## symlink the project cache directory to tmp2
## files created here are actually stored in tmp2
prjCache <- file.path(tmp1, "cache")
file.symlink(tmp2, prjCache)
## create a dummy cache object file in the project cache dir
(tmpf <- tempfile("cache_", prjCache))
cat(rnorm(100), file = tmpf)
file.exists(tmpf)
normPath(tmpf) ## note the 'real' location (i.e., symlink resolved)
getRelative(tmpf, prjCache) ## relative path
getRelative(tmpf, tmp2) ## relative path
makeRelative(tmpf, tmp2) ## abs path; tmpf and normPath(tmp2) don't share common path
makeRelative(tmpf, prjCache) ## abs path; tmpf and normPath(tmp2) don't share common path
makeRelative(normPath(tmpf), prjCache) ## rel path; share common path when both normPath-ed
unlink(tmp1, recursive = TRUE)
unlink(tmp2, recursive = TRUE)
[Package reproducible version 2.1.0 Index]