# Generating an Empty data.table with Column Names in R (2 Examples)

In this article, I’ll illustrate how to generate a blank data.table in the R programming language.

## Setting up the Examples

We install and load the data.table package. For general information about the package data.table, we recommend you to take a look at this page.

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

For Example 2, we use the iris dataset. We therefore load the data and convert it to a data.table.

```data(iris)                                   # Load iris data set
iris_DT_1 <- data.table::copy(iris)          # Replicate the iris data set
iris_DT_1 <- setDT(iris_DT_1)                # Convert to data.table```
```head(iris_DT_1)                              # Printing the data head
#    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1:          5.1         3.5          1.4         0.2  setosa
# 2:          4.9         3.0          1.4         0.2  setosa
# 3:          4.7         3.2          1.3         0.2  setosa
# 4:          4.6         3.1          1.5         0.2  setosa
# 5:          5.0         3.6          1.4         0.2  setosa
# 6:          5.4         3.9          1.7         0.4  setosa```

## Example 1: Generate empty data.table

Let's create a data.table from scratch. We only select the names and types of the columns and create it with data.table() as shown below.

```empty_DT <- data.table("A" = character(),    # Generating an empty data.table
"B" = logical(),
"C" = double(),
"D" = factor())

str(empty_DT)                                # See the structure of the data
# Classes ‘data.table’ and 'data.frame':	0 obs. of  4 variables:
#  \$ A: chr
#  \$ B: logi
#  \$ C: num
#  \$ D: Factor w/ 0 levels:
#  - attr(*, ".internal.selfref")=

empty_DT                                     # Printing the data
# Empty data.table (0 rows and 4 cols): A,B,C,D```

You see that there are zero rows in the data. For information about the different column types available in R, take a look at the description here.

## Example 2: Set all values in a data.table to NA

Alternatively to generating a data.table from scratch, we can also take a data.table and set all its input values equal to NA. Below, we set all values in the iris data to NA.

```iris_DT_2 <- data.table::copy(iris_DF_1)     # Replicate the iris data set
iris_DT_2[ !is.na(iris_DT_2) ] <- NA         # Set all values to NA
```
```str(iris_DT_2)                               # See the structure of the data
# 'data.frame':	150 obs. of  5 variables:
# \$ Sepal.Length: num  NA NA NA NA NA NA NA NA NA NA ...
# \$ Sepal.Width : num  NA NA NA NA NA NA NA NA NA NA ...
# \$ Petal.Length: num  NA NA NA NA NA NA NA NA NA NA ...
# \$ Petal.Width : num  NA NA NA NA NA NA NA NA NA NA ...
# \$ Species     : Factor w/ 3 levels "setosa","versicolor",..: NA NA NA NA NA NA NA NA NA NA ...
```
```head(iris_DT_2)                              # Printing the data head
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#   1           NA          NA           NA          NA
#   2           NA          NA           NA          NA
#   3           NA          NA           NA          NA
#   4           NA          NA           NA          NA
#   5           NA          NA           NA          NA
#   6           NA          NA           NA          NA    ```

## Further Resources

Please find some related R programming language tutorials on topics such as merging, matrices, and variables in the following list:

Note: This article was created in collaboration with Anna-Lena Wölwer. Anna-Lena is a researcher and programmer who creates tutorials on statistical methodology as well as on the R programming language. You may find more info about Anna-Lena and her other articles on her profile page.