tibble

Coerce lists, matrices, and more to data frames

Source: R/as_tibble.R

Maturing lifecycle

as_tibble() turns an existing object, such as a data frame, list, or matrix, into a so-called tibble, a data frame with class tbl_df. This is in contrast with tibble(), which builds a tibble from individual columns. as_tibble() is to tibble() as base::as.data.frame() is to base::data.frame().

as_tibble() is an S3 generic, with methods for:

as_tibble(x, ..., .rows = NULL, .name_repair = c("check_unique",
  "unique", "universal", "minimal"),
  rownames = pkgconfig::get_config("tibble::rownames", NULL))

# S3 method for data.frame
as_tibble(x, validate = NULL, ..., .rows = NULL,
  .name_repair = c("check_unique", "unique", "universal", "minimal"),
  rownames = pkgconfig::get_config("tibble::rownames", NULL))

# S3 method for list
as_tibble(x, validate = NULL, ..., .rows = NULL,
  .name_repair = c("check_unique", "unique", "universal", "minimal"))

# S3 method for matrix
as_tibble(x, ..., validate = NULL,
  .name_repair = NULL)

# S3 method for table
as_tibble(x, `_n` = "n", ..., n = `_n`)

# S3 method for NULL
as_tibble(x, ...)

# S3 method for default
as_tibble(x, ...)

Arguments

xA data frame, list, matrix, or other object that could reasonably be coerced to a tibble.
Other arguments passed on to individual methods.
.rowsThe number of rows, useful to create a 0-column tibble or just as an additional check.
.name_repairTreatment of problematic column names: "minimal": No name repair or checks, beyond basic existence, "unique": Make sure names are unique and not empty, "check_unique": (default value), no name repair, but check they are unique, "universal": Make the names unique and syntactic a function: apply custom name repair (e.g., .name_repair = make.names for names in the style of base R). A purrr-style anonymous function, see rlang::as_function() See name-repair for more details on these terms and the strategies used to enforce them.
rownamesHow to treat existing row names of a data frame or matrix: NULL: remove row names. This is the default. NA: keep row names. A string: the name of a new column. Existing rownames are transferred into this column and the row.names attribute is deleted. Read more in rownames.
_n, validateFor compatibility only, do not use for new code.
nName for count column, default: "n".

Row names

The default behavior is to silently remove row names.

New code should explicitly convert row names to a new column using the rownames argument.

For existing code that relies on the retention of row names, call pkgconfig::set_config("tibble::rownames" = NA) in your script or in your package’s .onLoad() function.

See also

tibble() constructs a tibble from individual columns. enframe() converts a named vector to a tibble with a column of names and column of values. name-repair documents the details of name repair.

Examples

l <- list(x = 1:500, y = runif(500), z = 500:1)
df <- as_tibble(l)

m <- matrix(rnorm(50), ncol = 5)
colnames(m) <- c("a", "b", "c", "d", "e")
df <- as_tibble(m)

as_tibble(as.list(1:3), .name_repair = "unique")#> New names:
#> * `` -> ...1
#> * `` -> ...2
#> * `` -> ...3#> # A tibble: 1 x 3
#>    ...1  ...2  ...3
#>   <int> <int> <int>
#> 1     1     2     3
# Prefer enframe() for vectors
enframe(1:3)#> # A tibble: 3 x 2
#>    name value
#>   <int> <int>
#> 1     1     1
#> 2     2     2
#> 3     3     3enframe(1:3, name = NULL)#> # A tibble: 3 x 1
#>   value
#>   <int>
#> 1     1
#> 2     2
#> 3     3
# For list-like inputs, `as_tibble()` is considerably simpler than
# `as.data.frame()` and hence faster
# NOT RUN {
if (requireNamespace("bench", quietly = TRUE)) {
  l2 <- replicate(26, sample(letters), simplify = FALSE)
  names(l2) <- letters
  bench::mark(
    as_tibble(l2, .name_repair = "universal"),
    as_tibble(l2, .name_repair = "unique"),
    as_tibble(l2, .name_repair = "minimal"),
    as_tibble(l2),
    as.data.frame(l2),
    check = FALSE
  )
}
# }

https://tibble.tidyverse.org/reference/as_tibble.html