str {utils}R Documentation

Compactly Display the Structure of an Arbitrary R Object


Compactly display the internal structure of an R object, a “diagnostic” function and an alternative to summary (and to some extent, dput). Ideally, only one line for each “basic” structure is displayed. It is especially well suited to compactly display the (abbreviated) contents of (possibly nested) lists. The idea is to give reasonable output for any R object. It calls args for (non-primitive) function objects.


str(object, ...)

## S3 method for class 'data.frame':
str(object, ...)

## Default S3 method:
str(object, max.level = NA, vec.len = 4, digits.d = 3,
    nchar.max = 128, give.attr = TRUE, give.length = TRUE,
    wid = getOption("width"), nest.lev = 0,
    indent.str = paste(" ", max(0, nest.lev + 1)), collapse = ".."),
    comp.str="$ ", no.list = FALSE, envir = NULL,


object any R object about which you want to have some information.
max.level maximal level of nesting which is applied for displaying nested structures, e.g., a list containing sub lists. Default NA: Display all nesting levels.
vec.len numeric (>= 0) indicating how many “first few” elements are displayed of each vector. The number is multiplied by different factors (from .5 to 3) depending on the kind of vector. Default 4.
digits.d number of digits for numerical components (as for print).
nchar.max maximal number of characters to show for character strings. Longer strings are truncated, see longch example below.
give.attr logical; if TRUE (default), show attributes as sub structures.
give.length logical; if TRUE (default), indicate length (as [1:...]).
wid the page width to be used. The default is the currently active options("width").
nest.lev current nesting level in the recursive calls to str.
indent.str the indentation string to use.
comp.str string to be used for separating list components.
no.list logical; if true, no “list of ..” is nor the class is printed.
envir the environment to be used for promise (see delayedAssign) objects only.
... potential further arguments (required for Method/Generic reasons).


str does not return anything, for efficiency reasons. The obvious side effect is output to the terminal.


Martin Maechler since 1990.

See Also

ls.str for listing objects with their structure; summary, args.


## The following examples show some of 'str' capabilities
str(args) #- more useful than  args(args) !
str(.Machine, digits = 20)
str( lsfit(1:9,1:9))
str( lsfit(1:9,1:9),  max = 1)
op <- options(); str(op) #- save first; otherwise internal options() is used. <- !exists(".Device") || is.null(.Device)
if( postscript()
str(par()); if(

ch <- letters[1:12]; <- 3:5
str(ch) # character NA's

nchar(longch <- paste(rep(letters,100), collapse=""))
str(longch, nchar.max = 52)

str(quote( { A+B; list(C,D) } ))

## S4 classes :
x <- 0:10; y <- c(26, 17, 13, 12, 20, 5, 9, 8, 5, 4, 8)
ll <- function(ymax=15, xh=6) -sum(dpois(y, lambda=ymax/(1+x/xh), log=TRUE))
fit <- mle(ll)

[Package utils version 2.1.0 Index]