R: Coerce a data.table to data.frame by reference

setDF {data.table} | R Documentation

## Coerce a data.table to data.frame by reference

### Description

In `data.table` parlance, all `set*` functions change their input by reference. That is, no copy is made at all, other than temporary working memory, which is as large as one column. The only other `data.table` operator that modifies input by reference is `:=`. Check out the `See Also` section below for other `set*` function `data.table` provides.

A helper function to convert a `data.table` or `list` of equal length to `data.frame` by reference.

### Usage

    setDF(x, rownames=NULL)

### Arguments

`x` | A `data.table`, `data.frame` or `list` of equal length.
`rownames` | A `character` vector to assign as the row names of `x`.

### Details

All `data.table` attributes including any keys of the input data.table are stripped off.

When using `rownames`, recall that the row names of a `data.frame` must be unique. By default, the assigned set of row names is simply the sequence 1, ..., `nrow(x)` (or `length(x)` for `list`s).

### Value

The input `data.table` is modified by reference to a `data.frame` and returned (invisibly). If you require a copy, take a copy first (using `DT2 = copy(DT)`). See `?copy`.

### See Also

`data.table`, `as.data.table`, `setDT`, `copy`, `setkey`, `setcolorder`, `setattr`, `setnames`, `set`, `:=`, `setorder`

### Examples

    X = data.table(x=1:5, y=6:10)
    ## convert 'X' to data.frame, without any copy.
    setDF(X)

    X = data.table(x=1:5, y=6:10)
    ## idem, assigning row names
    setDF(X, rownames = LETTERS[1:5])

    X = list(x=1:5, y=6:10)
    # X is converted to a data.frame without any copy.
    setDF(X)

[Package data.table version 1.11.8 Index]