data_frame {vctrs} | R Documentation |
Construct a data frame
Description
data_frame()
constructs a data frame. It is similar to
base::data.frame()
, but there are a few notable differences that make it
more in line with vctrs principles. The Properties section outlines these.
Usage
data_frame(
...,
.size = NULL,
.name_repair = c("check_unique", "unique", "universal", "minimal", "unique_quiet",
"universal_quiet"),
.error_call = current_env()
)
Arguments
... |
Vectors to become columns in the data frame. When inputs are named, those names are used for column names. |
.size |
The number of rows in the data frame. If |
.name_repair |
One of |
.error_call |
The execution environment of a currently
running function, e.g. |
Details
If no column names are supplied, ""
will be used as a default name for all
columns. This is applied before name repair occurs, so the default name
repair of "check_unique"
will error if any unnamed inputs are supplied and
"unique"
(or "unique_quiet"
) will repair the empty string column names
appropriately. If the column names don't matter, use a "minimal"
name
repair for convenience and performance.
Properties
Inputs are recycled to a common size with
vec_recycle_common()
.With the exception of data frames, inputs are not modified in any way. Character vectors are never converted to factors, and lists are stored as-is for easy creation of list-columns.
Unnamed data frame inputs are automatically unpacked. Named data frame inputs are stored unmodified as data frame columns.
-
NULL
inputs are completely ignored. The dots are dynamic, allowing for splicing of lists with
!!!
and unquoting.
See Also
df_list()
for safely creating a data frame's underlying data structure from
individual columns. new_data_frame()
for constructing the actual data
frame from that underlying data structure. Together, these can be useful
for developers when creating new data frame subclasses supporting
standard evaluation.
Examples
data_frame(x = 1, y = 2)
# Inputs are recycled using tidyverse recycling rules
data_frame(x = 1, y = 1:3)
# Strings are never converted to factors
class(data_frame(x = "foo")$x)
# List columns can be easily created
df <- data_frame(x = list(1:2, 2, 3:4), y = 3:1)
# However, the base print method is suboptimal for displaying them,
# so it is recommended to convert them to tibble
if (rlang::is_installed("tibble")) {
tibble::as_tibble(df)
}
# Named data frame inputs create data frame columns
df <- data_frame(x = data_frame(y = 1:2, z = "a"))
# The `x` column itself is another data frame
df$x
# Again, it is recommended to convert these to tibbles for a better
# print method
if (rlang::is_installed("tibble")) {
tibble::as_tibble(df)
}
# Unnamed data frame input is automatically unpacked
data_frame(x = 1, data_frame(y = 1:2, z = "a"))