Skip to content

r-lib/lobstr

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
R
 
 
man
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

lobstr

CRAN status R-CMD-check Codecov test coverage

lobstr provides tools in the same vein as str(), which allow you to dig into the detail of an object.

Installation

Install the released version of lobstr from CRAN:

install.packages("lobstr")

You can install the development version with:

# install.packages("devtools")
devtools::install_github("r-lib/lobstr")

Example

Abstract syntax trees

ast() draws the abstract syntax tree of R expressions:

ast(a + b + c)
#> █─`+` 
#> ├─█─`+` 
#> │ ├─a 
#> │ └─b 
#> └─c

ast(function(x = 1) {
  if (x > 0) print("Hi!")
})
#> █─`function` 
#> ├─█─x = 1 
#> ├─█─`{` 
#> │ └─█─`if` 
#> │   ├─█─`>` 
#> │   │ ├─x 
#> │   │ └─0 
#> │   └─█─print 
#> │     └─"Hi!" 
#> └─<inline srcref>

References

ref() shows hows objects can be shared across data structures by digging into the underlying __ref__erences:

x <- 1:1e6
y <- list(x, x, x)
ref(y)
#> █ [1:0x7fed114eaea8] <list> 
#> ├─[2:0x7fed21f373b8] <int> 
#> ├─[2:0x7fed21f373b8] 
#> └─[2:0x7fed21f373b8]

e <- rlang::env()
e$self <- e
ref(e)
#> █ [1:0x7fecf1856f00] <env> 
#> └─self = [1:0x7fecf1856f00]

A related tool is obj_size(), which computes the size of an object taking these shared references into account:

obj_size(x)
#> 680 B
obj_size(y)
#> 760 B

Call stack trees

cst() shows how frames on the call stack are connected:

f <- function(x) g(x)
g <- function(x) h(x)
h <- function(x) x
f(cst())
#>     ▆
#>  1. ├─global f(cst())
#>  2. │ └─global g(x)
#>  3. │   └─global h(x)
#>  4. └─lobstr::cst()

About

Understanding complex R objects with tools similar to str()

Topics

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Stars

Watchers

Forks

Packages

No packages published