---
title: "zipR vignette"
author: "Leslie Huang"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{zipR vignette}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

## 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 <a href="https://github.com/leslie-huang/zipR">open an issue on GitHub</a>.

### Loading the library

```{r echo=FALSE}

library(zipR)
```

### Dummy data

Some sequences of different lengths, in order to test the different options available in `zipr`.
```{r echo=TRUE}
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

```{r}
zipR::zipr(a,b)

```


### 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
```{r}
zipr(a, z, broadcast = TRUE)

zipr(a, c, broadcast = TRUE)
```

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

`fill = TRUE` without a `fillvalue` specified fills in the shorter vector with `NA`
```{r}
zipr(z, a, fill = TRUE)

```

### zip two vectors of different lengths, using a custom fill value
```{r}
zipr(c,a, fill = TRUE, fillvalue = z)

zipr(c,z, fill = TRUE, fillvalue = d)

```