inst/doc/VectorComprehension.R

## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## -----------------------------------------------------------------------------
x <- c("apples", "bananas", "pears")

fruit_chars <- vector("list", length(x))
for (i in seq_along(x)){
  fruit_chars[[i]] <- 1:nchar(x[i])
}
fruit_chars

## -----------------------------------------------------------------------------
fruit_chars <- lapply(x, function(i) 1:nchar(i))

## -----------------------------------------------------------------------------
library(eList)
fruit_chars <- List(for (i in x) 1:nchar(i))

## -----------------------------------------------------------------------------
List(for (i in x) i = 1:nchar(i))

## -----------------------------------------------------------------------------
List(for (i in x) (if (i == "bananas") "good" else "bad") = 1:nchar(i))

## -----------------------------------------------------------------------------
List(for (i in x) if (i == "bananas") 1:nchar(i))

## -----------------------------------------------------------------------------
List(for (i in x) if (i == "bananas") "delicious" else "ewww")

## -----------------------------------------------------------------------------
List(for (i in x) i = {
  n <- nchar(i)
  if (n > 6) "delicious"
  else if (n > 5) "ok"
  else "ewww"
})

## -----------------------------------------------------------------------------
List(for (i.j in enum(x)) j = i)

## -----------------------------------------------------------------------------
enum(x)

## -----------------------------------------------------------------------------
y <- list(a = 1:3, b = 4:6, c = 7:9)
List(for (i.j.k in y) (i+j)/k)


## -----------------------------------------------------------------------------
List(for (i..j in y) c(i, j))

## -----------------------------------------------------------------------------
List(for (i.j in items(y)) paste0(i, j))

## -----------------------------------------------------------------------------
z1 <- 1:3
z2 <- 4:6
List(for (`i, j` in zip(z1, z2)) i + j)

## -----------------------------------------------------------------------------
Num(for (i.j.k in y) (i+j)/k)
Chr(for (i.j.k in y) (i+j)/k)

## -----------------------------------------------------------------------------
..[for (i.j.k in y) (i+j)/k]

## -----------------------------------------------------------------------------
Mat(for (i in 1:3) for (j in 1:6) i*j)

## -----------------------------------------------------------------------------
Num(for (i in 1:3) for (j in 1:6) if (i==j) i*j)

## -----------------------------------------------------------------------------
Chr(for (i in Num(for (j in 1:3) j^2)) paste0(letters[sqrt(i)], i))

## ----eval=FALSE---------------------------------------------------------------
#  cluster <- auto_cluster(2)
#  Num(for (i in 1:100) sample(1:100, 1), clust=cluster)
#  close_cluster(cluster)

## -----------------------------------------------------------------------------
# Are all values greater than 0?
All(for (i in 1:10) i > 0)

## -----------------------------------------------------------------------------
# Are no values TRUE? (combines comprehension with other values)
None(for (i in 1:10) i < 0, TRUE, FALSE)

## -----------------------------------------------------------------------------
# factorial(5)
Prod(for (i in 1:5) i)

## -----------------------------------------------------------------------------
# Summary statistics from a random draw of 1000 observations from normal distribution
Stats(for (i in rnorm(1000)) i)

## -----------------------------------------------------------------------------
# Every other letter in the alphabet as a single character
Paste(for (i in seq(1,26,2)) letters[i], collapse=", ")

Try the eList package in your browser

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

eList documentation built on Jan. 23, 2021, 1:05 a.m.