data_extract {datawizard} | R Documentation |
Extract one or more columns or elements from an object
Description
data_extract()
(or its alias extract()
) is similar to $
. It extracts
either a single column or element from an object (e.g., a data frame, list),
or multiple columns resp. elements.
Usage
data_extract(data, select, ...)
## S3 method for class 'data.frame'
data_extract(
data,
select,
name = NULL,
extract = "all",
as_data_frame = FALSE,
ignore_case = FALSE,
regex = FALSE,
verbose = TRUE,
...
)
Arguments
data |
The object to subset. Methods are currently available for data frames
and data frame extensions (e.g., tibbles).
|
select |
Variables that will be included when performing the required
tasks. Can be either
a variable specified as a literal variable name (e.g., column_name ),
a string with the variable name (e.g., "column_name" ), or a character
vector of variable names (e.g., c("col1", "col2", "col3") ),
a formula with variable names (e.g., ~column_1 + column_2 ),
a vector of positive integers, giving the positions counting from the left
(e.g. 1 or c(1, 3, 5) ),
a vector of negative integers, giving the positions counting from the
right (e.g., -1 or -1:-3 ),
one of the following select-helpers: starts_with() , ends_with() ,
contains() , a range using : or regex("") . starts_with() ,
ends_with() , and contains() accept several patterns, e.g
starts_with("Sep", "Petal") .
or a function testing for logical conditions, e.g. is.numeric() (or
is.numeric ), or any user-defined function that selects the variables
for which the function returns TRUE (like: foo <- function(x) mean(x) > 3 ),
ranges specified via literal variable names, select-helpers (except
regex() ) and (user-defined) functions can be negated, i.e. return
non-matching elements, when prefixed with a - , e.g. -ends_with("") ,
-is.numeric or -(Sepal.Width:Petal.Length) . Note: Negation means
that matches are excluded, and thus, the exclude argument can be
used alternatively. For instance, select=-ends_with("Length") (with
- ) is equivalent to exclude=ends_with("Length") (no - ). In case
negation should not work as expected, use the exclude argument instead.
If NULL , selects all columns. Patterns that found no matches are silently
ignored, e.g. extract_column_names(iris, select = c("Species", "Test"))
will just return "Species" .
|
... |
For use by future methods.
|
name |
An optional argument that specifies the column to be used as
names for the vector elements after extraction. Must be specified either
as literal variable name (e.g., column_name ) or as string
("column_name" ). name will be ignored when a data frame is returned.
|
|
String, indicating which element will be extracted when select
matches multiple variables. Can be "all" (the default) to return all
matched variables, "first" or "last" to return the first or last match,
or "odd" and "even" to return all odd-numbered or even-numbered
matches. Note that "first" or "last" return a vector (unless
as_data_frame = TRUE ), while "all" can return a vector (if only one
match was found) or a data frame (for more than one match). Type safe
return values are only possible when extract is "first" or "last" (will
always return a vector) or when as_data_frame = TRUE (always returns a
data frame).
|
as_data_frame |
Logical, if TRUE , will always return a data frame,
even if only one variable was matched. If FALSE , either returns a vector
or a data frame. See extract for details.
|
ignore_case |
Logical, if TRUE and when one of the select-helpers or
a regular expression is used in select , ignores lower/upper case in the
search pattern when matching against variable names.
|
regex |
Logical, if TRUE , the search pattern from select will be
treated as regular expression. When regex = TRUE , select must be a
character string (or a variable containing a character string) and is not
allowed to be one of the supported select-helpers or a character vector
of length > 1. regex = TRUE is comparable to using one of the two
select-helpers, select = contains("") or select = regex("") , however,
since the select-helpers may not work when called from inside other
functions (see 'Details'), this argument may be used as workaround.
|
verbose |
Toggle warnings.
|
Details
data_extract()
can be used to select multiple variables or pull a
single variable from a data frame. Thus, the return value is by default not
type safe - data_extract()
either returns a vector or a data frame.
Extracting single variables (vectors)
When select
is the name of a single column, or when select only matches
one column, a vector is returned. A single variable is also returned when
extract
is either "first
or "last"
. Setting as_data_frame
to TRUE
overrides this behaviour and always returns a data frame.
Extracting a data frame of variables
When select
is a character vector containing more than one column name (or
a numeric vector with more than one valid column indices), or when select
uses one of the supported select-helpers that match multiple columns, a
data frame is returned. Setting as_data_frame
to TRUE
always returns
a data frame.
Value
A vector (or a data frame) containing the extracted element, or
NULL
if no matching variable was found.
Examples
# single variable
data_extract(mtcars, cyl, name = gear)
data_extract(mtcars, "cyl", name = gear)
data_extract(mtcars, -1, name = gear)
data_extract(mtcars, cyl, name = 0)
data_extract(mtcars, cyl, name = "row.names")
# selecting multiple variables
head(data_extract(iris, starts_with("Sepal")))
head(data_extract(iris, ends_with("Width")))
head(data_extract(iris, 2:4))
# select first of multiple variables
data_extract(iris, starts_with("Sepal"), extract = "first")
# select first of multiple variables, return as data frame
head(data_extract(iris, starts_with("Sepal"), extract = "first", as_data_frame = TRUE))
[Package
datawizard version 0.12.2
Index]