Author: Leslie Huang
Date: 2019-03-03

# zipR vignette

#### Leslie Huang

#### 2019-03-03

## Introducing zipR: zip() for R

zip() is an incredibly handy built-in function in Python. Unlike many other great Python features/structures (such as iterators, generators, and dictionaries), zip() is relatively easy to implement in R. Here is a brief introduction to `zipR`.

This is a work in progress! For bugs and features, please open an issue on GitHub.

### Loading the library

### Dummy data

Some sequences of different lengths, in order to test the different options available in `zipr`.

    a <- c(1,2,3)
    b <- c(4,5,6)
    c <- c(1,2,3,4,5,6)
    d <- c(7,8)
    z <- c(9)
    filler <- c(NA)

### zip two vectors of the same length

    zipR::zipr(a,b)
    #>   x y
    #> 1 1 4
    #> 2 2 5
    #> 3 3 6

### zip two vectors of different lengths, repeating the shorter vector

`broadcast = TRUE` repeats elements of the shorter vector so that it is the same length as the longer vector

    zipr(a, z, broadcast = TRUE)
    #>   x y
    #> 1 1 9
    #> 2 2 9
    #> 3 3 9

    zipr(a, c, broadcast = TRUE)
    #>   x y
    #> 1 1 1
    #> 2 2 2
    #> 3 3 3
    #> 4 1 4
    #> 5 2 5
    #> 6 3 6

### zip two vectors of different lengths, using the default fill value

`fill = TRUE` without a `fillvalue` specified fills in the shorter vector with `NA`

    zipr(z, a, fill = TRUE)
    #>    x y
    #> 1  9 1
    #> 2 NA 2
    #> 3 NA 3

### zip two vectors of different lengths, using a custom fill value

    zipr(c,a, fill = TRUE, fillvalue = z)
    #>   x y
    #> 1 1 1
    #> 2 2 2
    #> 3 3 3
    #> 4 4 9
    #> 5 5 9
    #> 6 6 9

    zipr(c,z, fill = TRUE, fillvalue = d)
    #>   x y
    #> 1 1 9
    #> 2 2 7
    #> 3 3 8
    #> 4 4 7
    #> 5 5 8
    #> 6 6 7