Nothing

knitr::opts_chunk$set(collapse = TRUE, comment = "#>") require(bit) .ff.version <- try(packageVersion("ff"), silent = TRUE) .ff.is.available <- !inherits(.ff.version, "try-error") && .ff.version >= "4.0.0" && require(ff) #tools::buildVignette("vignettes/bit-demo.Rmd") #devtools::build_vignettes()

Create a huge boolean vector (no NAs allowed)

n <- 1e8 b1 <- bit(n) b1

It costs only one bit per element

object.size(b1)/n

A couple of standard methods work

b1[10:30] <- TRUE summary(b1)

Create a another boolean vector with TRUE in some different positions

b2 <- bit(n) b2[20:40] <- TRUE b2

fast boolean operations

```
b1 & b2
```

fast boolean operations

summary(b1 & b2)

Since we have a very skewed distribution we may coerce to an even sparser representation

w1 <- as.bitwhich(b1) w2 <- as.bitwhich(b2) object.size(w1)/n

and everything

```
w1 & w2
```

works as expected

summary(w1 & w2)

even mixing

summary(b1 & w2)

Many bit functions support a range restriction,

summary(b1, range=c(1,1000))

which is useful

as.which(b1, range=c(1, 1000))

for filtered chunked looping

lapply(chunk(from=1, to=n, length=10), function(i)as.which(b1, range=i))

over large ff vectors

options(ffbatchbytes=1024^3) x <- ff(vmode="single", length=n) x[1:1000] <- runif(1000) lapply(chunk(x, length.out = 10), function(i)sum(x[as.hi(b1, range=i)]))

and wrap-up

delete(x) rm(x, b1, b2, w1, w2, n)

for more info check the usage vignette

**Any scripts or data that you put into this service are public.**

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.