| path_math {fs} | R Documentation |
Path computations
Description
All functions apart from path_real() are purely path computations, so the
files in question do not need to exist on the filesystem.
Usage
path_real(path)
path_split(path)
path_join(parts)
path_abs(path, start = ".")
path_norm(path)
path_rel(path, start = ".")
path_common(path)
path_has_parent(path, parent)
Arguments
path |
A character vector of one or more paths. |
parts |
A character vector or a list of character vectors, corresponding to split paths. |
start |
A starting directory to compute the path relative to. |
parent |
The parent path. |
Value
The new path(s) in an fs_path object, which is a character vector
that also has class fs_path. Except path_split(), which returns a list
of character vectors of path components.
Functions
-
path_real(): returns the canonical path, eliminating any symbolic links and the special references~,~user,., and.., , i.e. it callspath_expand()(literally) andpath_norm()(effectively). -
path_split(): splits paths into parts. -
path_join(): joins parts together. The inverse ofpath_split(). Seepath()to concatenate vectorized strings into a path. -
path_abs(): returns a normalized, absolute version of a path. -
path_norm(): eliminates.references and rationalizes up-level..references, soA/./BandA/foo/../Bboth becomeA/B, but../Bis not changed. If one of the paths is a symbolic link, this may change the meaning of the path, so consider usingpath_real()instead. -
path_rel(): computes the path relative to thestartpath, which can be either an absolute or relative path. -
path_common(): finds the common parts of two (or more) paths. -
path_has_parent(): determine if a path has a given parent.
See Also
path_expand() for expansion of user's home directory.
Examples
dir_create("a")
file_create("a/b")
link_create(path_abs("a"), "c")
# Realize the path
path_real("c/b")
# Split a path
parts <- path_split("a/b")
parts
# Join it together
path_join(parts)
# Find the absolute path
path_abs("..")
# Normalize a path
path_norm("a/../b\\c/.")
# Compute a relative path
path_rel("/foo/abc", "/foo/bar/baz")
# Find the common path between multiple paths
path_common(c("/foo/bar/baz", "/foo/bar/abc", "/foo/xyz/123"))
# Cleanup
dir_delete("a")
link_delete("c")