Skip to contents

Converts a data.table into a matrix, optionally using one of the columns in the data.table as the matrix rownames.

Usage

# S3 method for data.table
as.matrix(x, rownames=NULL, rownames.value=NULL, ...)

Arguments

x

a data.table

rownames

optional, a single column name or column number to use as the rownames in the returned matrix. If TRUE the key of the data.table will be used if it is a single column, otherwise the first column in the data.table will be used.

rownames.value

optional, a vector of values to be used as the rownames in the returned matrix. It must be the same length as nrow(x).

...

Required to be present because the generic `as.matrix` generic has it. Arguments here are not currently used or passed on by this method.

Details

as.matrix is a generic function in base R. It dispatches to as.matrix.data.table if its x argument is a data.table.

The method for data.tables will return a character matrix if there are only atomic columns and any non-(numeric/logical/complex) column, applying as.vector to factors and format to other non-character columns. Otherwise, the usual coercion hierarchy (logical < integer < double < complex) will be used, e.g., all-logical data frames will be coerced to a logical matrix, mixed logical-integer will give an integer matrix, etc.

Value

A new matrix containing the contents of x.

See also

Examples

DT <- data.table(A = letters[1:10], X = 1:10, Y = 11:20)
as.matrix(DT) # character matrix
#>       A   X    Y   
#>  [1,] "a" " 1" "11"
#>  [2,] "b" " 2" "12"
#>  [3,] "c" " 3" "13"
#>  [4,] "d" " 4" "14"
#>  [5,] "e" " 5" "15"
#>  [6,] "f" " 6" "16"
#>  [7,] "g" " 7" "17"
#>  [8,] "h" " 8" "18"
#>  [9,] "i" " 9" "19"
#> [10,] "j" "10" "20"
as.matrix(DT, rownames = "A")
#>    X  Y
#> a  1 11
#> b  2 12
#> c  3 13
#> d  4 14
#> e  5 15
#> f  6 16
#> g  7 17
#> h  8 18
#> i  9 19
#> j 10 20
as.matrix(DT, rownames = 1)
#>    X  Y
#> a  1 11
#> b  2 12
#> c  3 13
#> d  4 14
#> e  5 15
#> f  6 16
#> g  7 17
#> h  8 18
#> i  9 19
#> j 10 20
as.matrix(DT, rownames = TRUE)
#>    X  Y
#> a  1 11
#> b  2 12
#> c  3 13
#> d  4 14
#> e  5 15
#> f  6 16
#> g  7 17
#> h  8 18
#> i  9 19
#> j 10 20

setkey(DT, A)
as.matrix(DT, rownames = TRUE)
#>    X  Y
#> a  1 11
#> b  2 12
#> c  3 13
#> d  4 14
#> e  5 15
#> f  6 16
#> g  7 17
#> h  8 18
#> i  9 19
#> j 10 20