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

# 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