1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/helpers-vector.R
\name{all_of}
\alias{all_of}
\alias{any_of}
\title{Select variables from character vectors}
\usage{
all_of(x)
any_of(x, ..., vars = NULL)
}
\arguments{
\item{x}{A vector of character names or numeric locations.}
\item{...}{These dots are for future extensions and must be empty.}
\item{vars}{A character vector of variable names. If not supplied,
the variables are taken from the current selection context (as
established by functions like \code{select()} or \code{pivot_longer()}).}
}
\description{
These \link[=language]{selection helpers} select variables
contained in a character vector. They are especially useful for
programming with selecting functions.
\itemize{
\item \code{\link[=all_of]{all_of()}} is for strict selection. If any of the variables in
the character vector is missing, an error is thrown.
\item \code{\link[=any_of]{any_of()}} doesn't check for missing variables. It is especially
useful with negative selections, when you would like to make sure
a variable is removed.
}
The order of selected columns is determined by the order in the
vector.
}
\section{Examples}{
Selection helpers can be used in functions like \code{dplyr::select()}
or \code{tidyr::pivot_longer()}. Let's first attach the tidyverse:
\if{html}{\out{<div class="sourceCode r">}}\preformatted{library(tidyverse)
# For better printing
iris <- as_tibble(iris)
}\if{html}{\out{</div>}}
It is a common to have a names of variables in a vector.
\if{html}{\out{<div class="sourceCode r">}}\preformatted{vars <- c("Sepal.Length", "Sepal.Width")
iris[, vars]
#> # A tibble: 150 x 2
#> Sepal.Length Sepal.Width
#> <dbl> <dbl>
#> 1 5.1 3.5
#> 2 4.9 3
#> 3 4.7 3.2
#> 4 4.6 3.1
#> # ... with 146 more rows
}\if{html}{\out{</div>}}
To refer to these variables in selecting function, use \code{all_of()}:
\if{html}{\out{<div class="sourceCode r">}}\preformatted{iris \%>\% select(all_of(vars))
#> # A tibble: 150 x 2
#> Sepal.Length Sepal.Width
#> <dbl> <dbl>
#> 1 5.1 3.5
#> 2 4.9 3
#> 3 4.7 3.2
#> 4 4.6 3.1
#> # ... with 146 more rows
iris \%>\% pivot_longer(all_of(vars))
#> # A tibble: 300 x 5
#> Petal.Length Petal.Width Species name value
#> <dbl> <dbl> <fct> <chr> <dbl>
#> 1 1.4 0.2 setosa Sepal.Length 5.1
#> 2 1.4 0.2 setosa Sepal.Width 3.5
#> 3 1.4 0.2 setosa Sepal.Length 4.9
#> 4 1.4 0.2 setosa Sepal.Width 3
#> # ... with 296 more rows
}\if{html}{\out{</div>}}
If any of the variable is missing from the data frame, that's an error:
\if{html}{\out{<div class="sourceCode r">}}\preformatted{starwars \%>\% select(all_of(vars))
#> Error:
#> ! Problem while evaluating `all_of(vars)`.
#> Caused by error in `all_of()`:
#> ! Can't subset elements that don't exist.
#> x Elements `Sepal.Length` and `Sepal.Width` don't exist.
}\if{html}{\out{</div>}}
Use \code{any_of()} to allow missing variables:
\if{html}{\out{<div class="sourceCode r">}}\preformatted{starwars \%>\% select(any_of(vars))
#> # A tibble: 87 x 0
}\if{html}{\out{</div>}}
\code{any_of()} is especially useful to remove variables from a data
frame because calling it again does not cause an error:
\if{html}{\out{<div class="sourceCode r">}}\preformatted{iris \%>\% select(-any_of(vars))
#> # A tibble: 150 x 3
#> Petal.Length Petal.Width Species
#> <dbl> <dbl> <fct>
#> 1 1.4 0.2 setosa
#> 2 1.4 0.2 setosa
#> 3 1.3 0.2 setosa
#> 4 1.5 0.2 setosa
#> # ... with 146 more rows
iris \%>\% select(-any_of(vars)) \%>\% select(-any_of(vars))
#> # A tibble: 150 x 3
#> Petal.Length Petal.Width Species
#> <dbl> <dbl> <fct>
#> 1 1.4 0.2 setosa
#> 2 1.4 0.2 setosa
#> 3 1.3 0.2 setosa
#> 4 1.5 0.2 setosa
#> # ... with 146 more rows
}\if{html}{\out{</div>}}
}
\seealso{
The \link[=language]{selection language} page, which includes links to other selection helpers.
}
|