How to Create an Empty Data Frame in R (With Examples)


There are two basic ways to create an empty data frame in R:

Method 1: Matrix with Column Names

#create data frame with 0 rows and 3 columns
df <- data.frame(matrix(ncol = 3, nrow = 0))

#provide column names
colnames(df) <- c('var1', 'var2', 'var3')

Method 2: Initialize Empty Vectors

#create data frame with 5 empty vectors
df2 <- data.frame(Doubles=double(),
                 Integers=integer(),
                 Factors=factor(),
                 Logicals=logical(),
                 Characters=character(),
                 stringsAsFactors=FALSE)

This tutorial shows examples of how to use these two methods in practice.

Method 1: Matrix with Column Names

The first way to create an empty data frame is by using the following steps:

  • Define a matrix with 0 rows and however many columns you’d like.
  • Then use the data.frame() function to convert it to a data frame and the colnames() function to give it column names.
  • Then use the str() function to analyze the structure of the resulting data frame.

For example:

#create data frame with 0 rows and 5 columns
df <- data.frame(matrix(ncol = 5, nrow = 0))

#provide column names
colnames(df) <- c('var1', 'var2', 'var3', 'var4', 'var5')

#view structure of the data frame
str(df)

'data.frame':	0 obs. of  5 variables:
 $ var1: logi 
 $ var2: logi 
 $ var3: logi 
 $ var4: logi 
 $ var5: logi 

We can see that the resulting data frame has 0 observations (i.e. rows),  5 variables (i.e. columns), and each of the variables are of the class logical.

Although each variable is of the class logical, you can still add rows to the variables that are of different types.

Method 2: Initialize Empty Vectors

The second way to create an empty data frame is by using the following steps:

  • Define a data frame as a set of empty vectors with specific class types.
  • Specify stringsAsFactors=False so that any character vectors are treated as strings, not factors.

For example:

#create data frame with 5 empty vectors
df2 <- data.frame(Doubles=double(),
                  Integers=integer(),
                  Factors=factor(),
                  Logicals=logical(),
                  Characters=character(),
                  stringsAsFactors=FALSE)

#view structure of the data frame
str(df2)

'data.frame':	0 obs. of  5 variables:
 $ Doubles   : num 
 $ Integers  : int 
 $ Factors   : Factor w/ 0 levels: 
 $ Logicals  : logi 
 $ Characters: chr  

We can see that the resulting data frame has 0 observations (i.e. rows),  5 variables (i.e. columns), and each of the variables are five different classes.

Note that we were also able to provide column names for the data frame in just one step (e.g. the first column name is “Doubles”, the second column name is “Integers” and so on.

Additional Resources

How to Loop Through Column Names in R
How to Append Rows to a Data Frame in R
How to Add an Index Column to a Data Frame in R

Leave a Reply

Your email address will not be published. Required fields are marked *