A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/r-lib/lobstr below:

r-lib/lobstr: Understanding complex R objects with tools similar to str()

lobstr

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