R: Path computations

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 calls `path_expand()` (literally) and `path_norm()` (effectively).

- `path_split`: splits paths into parts.

- `path_join`: joins parts together. The inverse of `path_split()`. See `path()` 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, so `A/./B` and `A/foo/../B` both become `A/B`, but `../B` is not changed. If one of the paths is a symbolic link, this may change the meaning of the path, so consider using `path_real()` instead.

- `path_rel`: computes the path relative to the `start` path, 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")

[Package fs version 1.3.2 Index]