lobstr provides tools in the same vein as str()
, which allow you to dig into the detail of an object.
Install the released version of lobstr from CRAN:
install.packages("lobstr")
You can install the development version with:
# install.packages("pak") pak::pak("r-lib/lobstr")
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>
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:0x1063ac468] <list> #> ├─[2:0x11629ba38] <int> #> ├─[2:0x11629ba38] #> └─[2:0x11629ba38] e <- rlang::env() e$self <- e ref(e) #> █ [1:0x1068a2218] <env> #> └─self = [1:0x1068a2218]
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
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. ├─f(cst()) #> 2. │ └─g(x) #> 3. │ └─h(x) #> 4. └─lobstr::cst()
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4