bind {dplyr} | R Documentation

## Efficiently bind multiple data frames by row and column.

### Description

This is an efficient implementation of the common pattern of `do.call(rbind, dfs)` or `do.call(cbind, dfs)` for binding many data frames into one. `combine()` acts like `c()` or `unlist()` but uses consistent dplyr coercion rules.

### Usage

    bind_rows(..., .id = NULL)

    bind_cols(x, ...)

    combine(x, ...)

### Arguments

`.id` | Data frames identifier. When `.id` is supplied, a new column of identifiers is created to link each row to its original data frame. The labels are taken from the named arguments to `bind_rows()`. When a list of data frames is supplied, the labels are taken from the names of the list. If no names are found a numeric sequence is used instead.

`x,...`

Data frames to combine.

You can either supply one data frame per argument, or a list of data frames in the first argument.

When column-binding, rows are matched by position, not value so all data frames must have the same number of rows. To match by value, not position, see `left_join` etc. When row-binding, columns are matched by name, and any values that don't match will be filled with NA.

### Value

`bind_rows` and `bind_cols` always return a `tbl_df`

### Deprecated functions

`rbind_list` and `rbind_all` have been deprecated. Instead use `bind_rows`.

### Examples

    one <- mtcars[1:4, ]
    two <- mtcars[11:14, ]

    # You can either supply data frames as arguments
    bind_rows(one, two)
    # Or a single argument containing a list of data frames
    bind_rows(list(one, two))
    bind_rows(split(mtcars, mtcars$cyl))

    # When you supply a column name with the `.id` argument, a new
    # column is created to link each row to its original data frame
    bind_rows(list(one, two), .id = "id")
    bind_rows(list(a = one, b = two), .id = "id")
    bind_rows("group 1" = one, "group 2" = two, .id = "groups")

    # Columns don't need to match when row-binding
    bind_rows(data.frame(x = 1:3), data.frame(y = 1:4))
    ## Not run:
    # Rows do need to match when column-binding
    bind_cols(data.frame(x = 1), data.frame(y = 1:2))

    ## End(Not run)

    bind_cols(one, two)
    bind_cols(list(one, two))

    # combine applies the same coercion rules
    f1 <- factor("a")
    f2 <- factor("b")
    c(f1, f2)
    unlist(list(f1, f2))

    combine(f1, f2)
    combine(list(f1, f2))

[Package dplyr version 0.4.3 Index]