as.data.table {data.table} | R Documentation

## Coerce to data.table

### Description

Functions to check if an object is `data.table`, or coerce it if possible.

### Usage

    as.data.table(x, keep.rownames=FALSE, ...)

    ## S3 method for class 'data.table'
    as.data.table(x, ...)

    is.data.table(x)

### Arguments

`x` | An R object.
`keep.rownames` | Default is `FALSE`. If `TRUE`, adds the input object's names as a separate column named `"rn"`. `keep.rownames = "id"` names the column `"id"` instead.
`...` | Additional arguments to be passed to or from other methods.

### Details

`as.data.table` is a generic function with many methods, and other packages can supply further methods.

If a `list` is supplied, each element is converted to a column in the `data.table` with shorter elements recycled automatically. Similarly, each column of a `matrix` is converted separately.

`character` objects are not converted to `factor` types unlike `as.data.frame`.

If a `data.frame` is supplied, all classes preceding `"data.frame"` are stripped. Similarly, for `data.table` as input, all classes preceding `"data.table"` are stripped. `as.data.table` methods returns a copy of original data. To modify by reference see `setDT` and `setDF`.

`keep.rownames` argument can be used to preserve the (row)names attribute in the resulting `data.table`.

### See Also

`data.table`, `setDT`, `setDF`, `copy`, `setkey`, `J`, `SJ`, `CJ`, `merge.data.table`, `:=`, `alloc.col`, `truelength`, `rbindlist`, `setNumericRounding`, `datatable-optimize`

### Examples

    nn = c(a=0.1, b=0.2, c=0.3, d=0.4)
    as.data.table(nn)
    as.data.table(nn, keep.rownames=TRUE)
    as.data.table(nn, keep.rownames="rownames")

    # char object not converted to factor
    cc = c(X="a", Y="b", Z="c")
    as.data.table(cc)
    as.data.table(cc, keep.rownames=TRUE)
    as.data.table(cc, keep.rownames="rownames")

    mm = matrix(1:4, ncol=2, dimnames=list(c("r1", "r2"), c("c1", "c2")))
    as.data.table(mm)
    as.data.table(mm, keep.rownames=TRUE)
    as.data.table(mm, keep.rownames="rownames")

    ll = list(a=1:2, b=3:4)
    as.data.table(ll)
    as.data.table(ll, keep.rownames=TRUE)
    as.data.table(ll, keep.rownames="rownames")

    df = data.frame(x=rep(c("x","y","z"),each=2), y=c(1,3,6), row.names=LETTERS[1:6])
    as.data.table(df)
    as.data.table(df, keep.rownames=TRUE)
    as.data.table(df, keep.rownames="rownames")

    dt = data.table(x=rep(c("x","y","z"),each=2), y=c(1:6))
    as.data.table(dt)

[Package data.table version 1.10.4-1 Index]