# Convert data.table to Data Frame & Matrix in R (4 Examples)

In this post, youâ€™ll learn how to transform a data.table to a data.frame and a matrix (and vice versa) in the R programming language. For a general overview of data.table, take a look at our blog post here. You can also combine the information in this post with our post here to convert a time series to a data.table and the other way around.

Letâ€™s get startedâ€¦

## Example Data & Software Packages

First, we have to install and load the data.table package.

```install.packages("data.table")    # Install & load data.table package
library("data.table")```

If you did not work with data.tables before, we recommend you to take a look at the R project introduction here and the data.table gitlab page here.

The following data is used as a basis for this R tutorial:

```DT_1 <- data.table("v1" = 1:4,    # Create a data.table
"v2" = letters[1:4],
"v3" = c(T, F, F, T))
head(DT_1)                        # Print first rows of data```

As you can see based on Table 1, our example data is a data table and consists of three columns. We create a second example data.table which contains only numeric columns.

```DT_2 <- data.table("v1" = 1:4,    # Create a data.table
"v2" = 5:8,
"v3" = seq(1, 1.75, by = .25))
head(DT_2)                        # Print first rows of data```

The output of the previous code is shown in Table 2: a data.table with three numeric columns.

## Example 1: Transform data.table to data.frame

In Example 1, Iâ€™ll show how to convert a data.table to a data.frame using the function as.data.frame().

```str(DT_1)                         # Display the structure of the data
# Classes â€˜data.tableâ€™ and 'data.frame':	4 obs. of  3 variables:
#  \$ v1: int  1 2 3 4
#  \$ v2: chr  "a" "b" "c" "d"
#  \$ v3: logi  TRUE FALSE FALSE TRUE
#  - attr(*, ".internal.selfref")=<externalptr>

DF_1 <- as.data.frame(DT_1)       # Coerce to a data.frame
str(DF_1)                         # Display the structure of the data
# 'data.frame':	4 obs. of  3 variables:
#  \$ v1: int  1 2 3 4
#  \$ v2: chr  "a" "b" "c" "d"
#  \$ v3: logi  TRUE FALSE FALSE TRUE

head(DF_1)                        # Print first rows of data```

As shown in Table 3, we have created a data.frame with the previous R programming code. You see that data frames and data tables have a very similar structure in R.

## Example 2: Transform data.frame to data.table

This example illustrates how to alter the structure of a data.frame to a data.table using the function as.data.table().

```DT_1b <- as.data.table(DF_1)      # Coerce to data.table
str(DT_1b)                        # Display the structure of the data
# Classes â€˜data.tableâ€™ and 'data.frame':	4 obs. of  3 variables:
#  \$ v1: int  1 2 3 4
#  \$ v2: chr  "a" "b" "c" "d"
#  \$ v3: logi  TRUE FALSE FALSE TRUE
#  - attr(*, ".internal.selfref")=<externalptr>

head(DT_1b)                       # Print first rows of data```

As revealed in Table 4, we have managed to construct a data.table by executing the previous R programming syntax.

## Example 3: Transform data.table to Matrix

This example explains how to modify a data.table to a matrix. Note that for this conversion we only consider data.tables with purely numeric values. If there is even one non-numeric column, all cells of the resulting matrix will be formed as characters. In this post, you can see how to select the numeric columns of a data.table or data.frame.

```str(DT_2)                         # Display the structure of the data
# Classes â€˜data.tableâ€™ and 'data.frame':	4 obs. of  3 variables:
#  \$ v1: int  1 2 3 4
#  \$ v2: int  5 6 7 8
#  \$ v3: num  1 1.25 1.5 1.75
#  - attr(*, ".internal.selfref")=<externalptr>

mat_2 <- as.matrix(DT_2)          # Convert a data.table to a matrix
str(mat_2)                        # Display the structure of the data
#  num [1:4, 1:3] 1 2 3 4 5 6 7 8 1 1.25 ...
#  - attr(*, "dimnames")=List of 2
#   ..\$ : NULL
#   ..\$ : chr [1:3] "v1" "v2" "v3"

head(mat_2)                       # Print first rows of data```

As shown in Table 5, we have constructed a matrix from a data.table by use of function as.matrix().

## Example 4: Transform Matrix to data.table

In Example 4, Iâ€™ll explain how to transform a matrix into a data.table, using the function as.data.table().

```DT_2b <- as.data.table(mat_2)     # Coerce to data.table
str(DT_2b)                        # Display the structure of the data
# Classes â€˜data.tableâ€™ and 'data.frame':	4 obs. of  3 variables:
#  \$ v1: num  1 2 3 4
#  \$ v2: num  5 6 7 8
#  \$ v3: num  1 1.25 1.5 1.75
#  - attr(*, ".internal.selfref")=<externalptr>

head(DT_2b)                       # Print first rows of data```

The output of the previous R code is shown in Table 6: A data.table with three numeric columns.

## Video, Further Resources & Summary

Would you like to learn more about the conversion from a data.table to a data.frame or a matrix? Then I recommend having a look at the following video on my YouTube channel. In the video, Iâ€™m explaining the R codes of this article in RStudio.

In addition, you may have a look at the other articles on my website. You can find a selection of articles on topics such as matrices and data conversion below:

This article has illustrated how to change the structure of a data.table to a data.frame and a matrix in the R programming language. Please tell me about it in the comments section, if you have any further questions.

This page was created in collaboration with Anna-Lena WÃ¶lwer. Have a look at Anna-Lenaâ€™s author page to receive further details about her academic background and the other articles she has written for Statistics Globe.

Subscribe to the Statistics Globe Newsletter