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

library(devtools)

devtools::install_github("leslie-huang/zipR")
## Skipping install of 'zipR' from a github remote, the SHA1 (117b11f0) has not changed since last install.
##   Use `force = TRUE` to force installation
library(zipR)

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