Learn R Programming

SpaDES (version 1.2.0)

classFilter: Filter objects by class

Description

Based on http://stackoverflow.com/a/5158978/1380598.

Usage

classFilter(x, include, exclude, envir)
"classFilter"(x, include, exclude, envir)
"classFilter"(x, include, exclude)
"classFilter"(x, include, envir)
"classFilter"(x, include)

Arguments

x
Character vector of object names to filter, possibly from ls.
include
Class(es) to include, as a character vector.
exclude
Optional class(es) to exclude, as a character vector.
envir
The environment ins which to search for objects. Default is the calling environment.

Value

Vector of object names matching the class filter.

Examples

Run this code
## Not run: 
#   ## from global environment
#   a <- list(1:10)     # class `list`
#   b <- letters        # class `character`
#   d <- stats::runif(10)      # class `numeric`
#   f <- sample(1L:10L) # class `numeric`, `integer`
#   g <- lm( jitter(d) ~ d ) # class `lm`
#   h <- glm( jitter(d) ~ d ) # class `lm`, `glm`
#   classFilter(ls(), include=c("character", "list"))
#   classFilter(ls(), include = "numeric")
#   classFilter(ls(), include = "numeric", exclude = "integer")
#   classFilter(ls(), include = "lm")
#   classFilter(ls(), include = "lm", exclude = "glm")
#   rm(a, b, d, f, g, h)
# ## End(Not run)

## from local (e.g., function) environment
local({
  e <- environment()
  a <- list(1:10)     # class `list`
  b <- letters        # class `character`
  d <- stats::runif(10)      # class `numeric`
  f <- sample(1L:10L) # class `numeric`, `integer`
  g <- lm( jitter(d) ~ d ) # class `lm`
  h <- glm( jitter(d) ~ d ) # class `lm`, `glm`
  classFilter(ls(), include=c("character", "list"), envir = e)
  classFilter(ls(), include = "numeric", envir = e)
  classFilter(ls(), include = "numeric", exclude = "integer", envir = e)
  classFilter(ls(), include = "lm", envir = e)
  classFilter(ls(), include = "lm", exclude = "glm", envir = e)
  rm(a, b, d, e, f, g, h)
})

## from another environment
e = new.env(parent = emptyenv())
e$a <- list(1:10)     # class `list`
e$b <- letters        # class `character`
e$d <- stats::runif(10)      # class `numeric`
e$f <- sample(1L:10L) # class `numeric`, `integer`
e$g <- lm( jitter(e$d) ~ e$d ) # class `lm`
e$h <- glm( jitter(e$d) ~ e$d ) # class `lm`, `glm`
classFilter(ls(e), include=c("character", "list"), envir = e)
classFilter(ls(e), include = "numeric", envir = e)
classFilter(ls(e), include = "numeric", exclude = "integer", envir = e)
classFilter(ls(e), include = "lm", envir = e)
classFilter(ls(e), include = "lm", exclude = "glm", envir = e)
rm(a, b, d, f, g, h, envir = e)
rm(e)

Run the code above in your browser using DataLab