lobstr v1.0.0

0

Monthly downloads

0th

Percentile

Visualize R Data Structures with Trees

A set of tools for inspecting and understanding R data structures inspired by str(). Includes ast() for visualizing abstract syntax trees, ref() for showing shared references, cst() for showing call stack trees, and obj_size() for computing object sizes.

Readme

lobstr

CRAN
status Travis-CI Build
Status Coverage
status

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

Installation

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:0x7f9adf16b078] <list> 
#> ├─[2:0x7f9add3d9b48] <int> 
#> ├─[2:0x7f9add3d9b48] 
#> └─[2:0x7f9add3d9b48]

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

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())
#> █
#> ├─f(cst())
#> │ └─g(x)
#> │   └─h(x)
#> └─cst()

Functions in lobstr

Name Description
obj_size Calculate the size of an object.
ref Display tree of references
cst Call stack tree
mem_used How much memory is currently used by R?
obj_addr Find memory location of objects and their children.
ast Display the abstract syntax tree
No Results!

Last month downloads

Details

License GPL-3
URL https://github.com/r-lib/lobstr
BugReports https://github.com/r-lib/lobstr/issues
LinkingTo Rcpp
Encoding UTF-8
LazyData true
RoxygenNote 6.1.0
NeedsCompilation yes
Packaged 2018-10-31 15:58:48 UTC; hadley
Repository CRAN
Date/Publication 2018-11-04 15:50:27 UTC

Include our badge in your README

[![Rdoc](http://www.rdocumentation.org/badges/version/lobstr)](http://www.rdocumentation.org/packages/lobstr)