Skip to contents

[Stable]

Initializes a data for teal application.

Usage

teal_data(..., join_keys = teal.data::join_keys(), code = character(0))

# S3 method for class 'teal_data'
x[names]

Arguments

...

any number of objects (presumably data objects) provided as name = value pairs.

join_keys

(join_keys or single join_key_set) optional object with datasets column names used for joining. If empty then no joins between pairs of objects.

code

(character, language) optional code to reproduce the datasets provided in .... Note this code is not executed and the teal_data may not be reproducible

Use verify() to verify code reproducibility.

x

(teal_data)

names

(character) names of objects included in teal_subset to subset

Value

A teal_data object.

Details

A teal_data is meant to be used for reproducibility purposes. The class inherits from qenv and we encourage to get familiar with teal.code first. teal_data has following characteristics:

  • It inherits from the environment and methods such as $, get(), ls(), as.list(), parent.env() work out of the box.

  • teal_data is a locked environment, and data modification is only possible through the teal.code::eval_code() and within.qenv() functions.

  • It stores metadata about the code used to create the data (see get_code()).

  • It supports slicing (see teal.code::subset-qenv)

  • Is immutable which means that each code evaluation does not modify the original teal_data environment directly.

  • It maintains information about relationships between datasets (see join_keys()).

Subsetting

x[names] subsets objects in teal_data environment and limit the code to the necessary needed to build limited objects.

Examples

teal_data(x1 = iris, x2 = mtcars)
#> ✖ unverified teal_data object
#> <environment: 0x55da495a0150> 🔒 
#> Parent: <environment: devtools_shims> 
#> Bindings:
#> - x1: [data.frame]
#> - x2: [data.frame]


# Subsetting
data <- teal_data()
data <- eval_code(data, "a <- 1;b<-2")
data["a"]
#> ✅︎ verified teal_data object
#> <environment: 0x55da4b346108> 🔒 
#> Parent: <environment: devtools_shims> 
#> Bindings:
#> - a: [numeric]
data[c("a", "b")]
#> ✅︎ verified teal_data object
#> <environment: 0x55da48d3ff28> 🔒 
#> Parent: <environment: devtools_shims> 
#> Bindings:
#> - a: [numeric]
#> - b: [numeric]

join_keys(data) <- join_keys(join_key("a", "b", "x"))
join_keys(data["a"]) # should show empty keys
#> An empty join_keys object. 
join_keys(data["b"])
#> A join_keys object containing foreign keys between 2 datasets:
#> a: [no primary keys]
#>   <-- b: [x]
#> b: [no primary keys]
#>   --> a: [x] 
join_keys(data)["a"] # should show empty keys
#> An empty join_keys object. 
join_keys(data)["b"]
#> A join_keys object containing foreign keys between 2 datasets:
#> a: [no primary keys]
#>   <-- b: [x]
#> b: [no primary keys]
#>   --> a: [x]