str() Function in R

Spread the love

Whether you’re handling simple vectors or complex data frames, the str() function is your one-stop resource for exploring and understanding data structure.

The str() Function: An Overview

The str() function provides a compact, human-readable summary of an R object. This means it can summarize almost all types of R objects, including vectors, data frames, lists, and more. Its primary advantage is the ease with which it can summarize even large and complex objects, offering a quick glance into their structure.

The basic syntax for the str() function is as follows:


Where object is the data structure that you want to examine.

Let’s delve deeper into how to use this essential function in different situations and with various types of data.

Using str() Function with Vectors

A vector is the most basic data structure in R, and it holds elements of the same type. Let’s look at how the str() function can be used with vectors.

Consider a numeric vector:

numeric_vector <- c(1, 2, 3, 4, 5)

The output will be:

num [1:5] 1 2 3 4 5

The output reveals that numeric_vector is a numeric vector (denoted by “num”) with five elements.

Let’s try this with a character vector:

char_vector <- c("apple", "banana", "cherry")

The output will be:

chr [1:3] "apple" "banana" "cherry"

Here, char_vector is a character vector (denoted by “chr”) with three elements.

Using str() Function with Data Frames

Data frames are more complex than vectors, as they can hold different types of data. Let’s see how str() works with data frames.

Consider a data frame:

data_frame <- data.frame(
  "Fruit" = c("apple", "banana", "cherry"),
  "Color" = c("red", "yellow", "red"),
  "Price" = c(1, 0.5, 2)

The output will be:

'data.frame':   3 obs. of  3 variables:
 $ Fruit: Factor w/ 3 levels "apple","banana",..: 1 2 3
 $ Color: Factor w/ 2 levels "red","yellow": 1 2 1
 $ Price: num  1 0.5 2

This tells us that data_frame is a data frame with three observations (rows) and three variables (columns). It also tells us about the structure of each column.

Using str() Function with Lists

Lists in R can contain elements of different types, making them more complex. Let’s see how str() can help us understand lists.

Consider a list:

list_data <- list(
  "Fruit" = c("apple", "banana", "cherry"),
  "Prices" = c(1, 0.5, 2),
  "Available" = c(TRUE, TRUE, FALSE)

The output will be:

List of 3
 $ Fruit    : chr [1:3] "apple" "banana" "cherry"
 $ Prices   : num [1:3] 1 0.5 2
 $ Available: logi [1:3] TRUE TRUE FALSE

This tells us that list_data is a list containing three elements, and it also shows the structure of each element.

Changing Default Settings of str()

The str() function allows you to change its default behavior to suit your needs. Some important arguments are:

  • max.level: Controls the depth of nesting.
  • list.len: Controls the number of elements in list vectors.
  • vec.len: Controls the number of elements in atomic vectors.

Consider a list with nested elements:

nested_list <- list(
  "Fruit" = c("apple", "banana", "cherry"),
  "Details" = list(
    "Prices" = c(1, 0.5, 2),
    "Available" = c(TRUE, TRUE, FALSE)
str(nested_list, max.level = 1)

The output will be:

List of 2
 $ Fruit  : chr [1:3] "apple" "banana" "cherry"
 $ Details:List of 2

Here, max.level = 1 limits the depth of nesting to 1 level.

Comparing str() with Other Introspection Functions

While the str() function provides a compact, readable summary, R offers other functions for similar purposes:

  • summary(): Offers a statistical summary of an object.
  • head(): Displays the first few elements/rows of an object.
  • View(): Opens a spreadsheet-like viewer (only in RStudio).

Even though these functions serve related tasks, str() stands out due to its compactness and readability, especially with large and complex objects.


The str() function in R is a robust and flexible tool for quickly inspecting and understanding the structure of R objects. It is invaluable for tasks ranging from preliminary data exploration to debugging complex data structures. Understanding how to use str() effectively can significantly streamline your data analysis workflows in R.

Posted in RTagged

Leave a Reply