R: Coerce lists, matrices, and more to data frames

as_tibble {tibble} | R Documentation

## Coerce lists, matrices, and more to data frames

### Description

`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:

- `data.frame`: Thin wrapper around the `list` method that implements tibble's treatment of rownames.

- list

- `matrix`, `poly`, `ts`, `table`

- Default: An atomic vector is first coerced to a list and, unlike `base::as.data.frame()`, the returned tibble has one column per element. Other inputs are first coerced with `base::as.data.frame()`.

### Usage

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

    ## S3 method for class '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 class 'list'
    as_tibble(x, validate = NULL, ..., .rows = NULL,
      .name_repair = c("check_unique", "unique", "universal", "minimal"))

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

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

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

    ## Default S3 method:
    as_tibble(x, ...)

### Arguments

`x` | A data frame, list, matrix, or other object that could reasonably be coerced to a tibble.
`...` | Other arguments passed on to individual methods.
`.rows` | The number of rows, useful to create a 0-column tibble or just as an additional check.
`.name_repair` | Treatment 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.
`rownames` | How 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, validate` | For compatibility only, do not use for new code.
`n` | Name 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")

    # Prefer enframe() for vectors
    enframe(1:3)
    enframe(1:3, name = NULL)

    # 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
      )
    }

    ## End(Not run)

[Package tibble version 2.0.1 Index]