Exploring R’s Versatile str() Function: Unraveling Your Data with Ease!


Steven P. Sanderson II, MPH


August 4, 2023


Welcome, fellow data enthusiasts, to another exciting blog post! Today, we’re diving deep into R’s invaluable str() function – a powerful tool for gaining insight into your datasets. Whether you’re a seasoned data scientist or just starting with R, str() will undoubtedly become your go-to function for data exploration. Let’s embark on this journey together and unleash the full potential of str()!

Understanding the str() Function

In a nutshell, str() stands for “structure” and offers a concise summary of the structure of an R object. It presents essential details about the object, including its data type, dimensions, and the first few values. By providing an overview of your data, str() allows you to grasp the fundamentals at a glance and proceed with a clearer understanding of what you’re working with.

The str() function in R is a diagnostic function that displays the internal structure of an R object. It is a very useful function for understanding the structure of data frames, lists, and other R objects.

The str() function takes a single argument, which is the name of the R object you want to display the structure of. For example, to display the structure of a data frame called df, you would use the following code:


The output of the str() function will vary depending on the type of R object you are passing it. For a data frame, the output will show the names of the columns, the class of each column, and the first few rows of data. For a list, the output will show the names of the elements in the list, the class of each element, and the value of each element.


Example 1: Basic Usage with a Vector

Let’s begin with a simple example. Suppose we have a numeric vector named “ages,” representing the ages of individuals in a survey:

ages <- c(25, 30, 22, 40, 35)
 num [1:5] 25 30 22 40 35

Here, the output reveals that “ages” is a numeric vector with five elements, ranging from 25 to 35. It helps us quickly confirm the data type and size.

Example 2: Investigating a Data Frame

Now, let’s explore a more complex scenario. We have a data frame named “students,” containing information about students’ names, ages, and grades:

students <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(22, 23, 21),
  grade = c("A", "B", "A-")
'data.frame':   3 obs. of  3 variables:
 $ name : chr  "Alice" "Bob" "Charlie"
 $ age  : num  22 23 21
 $ grade: chr  "A" "B" "A-"

The output informs us that “students” is a data frame with three observations (rows) and three variables (columns). It also lists the data types for each column, with “chr” representing character and “num” representing numeric.

Example 3: Checking Nested Data Structures

str() handles nested data structures effortlessly. Let’s consider a list called “nested_data” containing a data frame and a character vector:

nested_data <- list(
  data_frame = data.frame(x = 1:3, y = 4:6),
  character_vector = c("hello", "world", "R")
List of 2
 $ data_frame      :'data.frame':   3 obs. of  2 variables:
  ..$ x: int [1:3] 1 2 3
  ..$ y: int [1:3] 4 5 6
 $ character_vector: chr [1:3] "hello" "world" "R"

The output provides a comprehensive breakdown of the nested_data list. It consists of two components: a data frame with two variables, “x” and “y,” and a character vector.

Here are some additional examples of how to use the str() function:

To display the structure of a list, you would use the following code:

str(list(a = 1, b = "hello", c = list(1, 2, 3)))
List of 3
 $ a: num 1
 $ b: chr "hello"
 $ c:List of 3
  ..$ : num 1
  ..$ : num 2
  ..$ : num 3

To display the structure of a function, you would use the following code:

str(function(x) x^2)
function (x)  
 - attr(*, "srcref")= 'srcref' int [1:8] 1 5 1 19 5 19 1 1
  ..- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile' <environment: 0x000002c3e62abd70> 

If you want to see the options that are available to be set to the str() function, then just run the below code:

[1] "no"

[1] 3

[1] 4

[1] 99


[1] TRUE

function (x, ...) 
format(x, trim = TRUE, drop0trailing = TRUE, ...)
<environment: 0x000002c3e214ad28>

Encouraging Further Exploration

Now that you’ve experienced the magic of str(), I encourage you to try it on your own datasets! The str() function empowers you to understand your data efficiently, making it an indispensable tool in your R arsenal. Remember, a data scientist’s superpower lies in their ability to comprehend and manipulate data effectively, and str() is your secret weapon.


Congratulations on mastering the art of utilizing the str() function in R! We’ve explored various examples, unraveling the structures of different data objects, and witnessed how str() simplifies data exploration. Armed with this newfound knowledge, you’re well-equipped to tackle even the most complex datasets. Keep experimenting and harness the power of R to unlock remarkable insights. Happy coding!