Author: John Mount
Date: 2023-08-19

# Named Map Builder

#### John Mount

#### 2023-08-19

“named map builder” is an operator written as “`:=`”. Named map builder is a very simple bit of code that performs a very simple task: it adds names to vectors or lists (making them work more like maps).

Here are some examples:

    library("wrapr")

    'a' := 5

    ## a
    ## 5

    c('a' := 5, 'b' := 6)

    ## a b
    ## 5 6

    c('a', 'b') := c(5, 6)

    ## a b
    ## 5 6

The left-side argument of the `:=` operator is called “the names”, and the right-side argument is called “the values”. The `:=` operators returns the values with the names set to names.

`:=` is a left-over assignment operator in `R`. It is part of the syntax, but by default not defined.

`data.table` has long used `:=` to denote “in-place assignment” as in the following.

    library("data.table")

    data.table(x = 1)[, y := x + 1][]
    #    x y
    # 1: 1 2

`dplyr` later adopted the `:=` notation as this allows for substitution on the left-hand sides of assignments. `wrapr::qc()` uses the `:=` for the same purpose.

A key use of the named map builder is the following:

    `:=` <- wrapr::`:=` # in case data.tables "catch calls" definition is active

    key = 'keycode'
    key := 'value'

    ## keycode
    ## "value"

Notice the value inside the variable `key` was used as the array name, this differs from what is easily done with `R`’s native `c(key = 'value')` style notation.

    help(`:=`, package = 'wrapr')