Combines two or more NestedScale objects into one multi-dimensional index – time x space, time x space x industry, and so on. The atoms of the product are tuples of the component atoms, and they stay LAZY: nothing is materialised at construction, and product_atoms() is the guarded way to realise them.

ScaleProduct(axes, keys, joint_weights = NULL, meta = list())

Arguments

axes

Named list of NestedScale objects; the names are the axis names.

keys

Named character vector, one entry per axis, giving the data column that carries that axis's unit codes.

joint_weights

Reserved for a weight that varies jointly across axes (an hourly profile used as a spatial split weight). NULL in this version; a supplied table is validated but not yet consumed.

meta

Named list of attributes (name, desc).

Value

A ScaleProduct object.

Details

Construct with scale_product().

Examples

scale_product(a = scale_example(), b = scale_example2())
#> ScaleProduct: <unnamed> 
#> Axes (2):
#>   a : NestedScale 'example'  sector/class/group/unit  atoms 7  key: unit
#>   b : NestedScale 'example2'  era/period  atoms 4  key: period
#> Atoms: 7 x 4 = 28  (not materialised)