Learn R Programming

SpaDES (version 1.0.1)

classFilter: Filter objects by class

Description

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

Usage

classFilter(x, include, exclude, envir)

## S3 method for class 'character,character,character,environment':
classFilter(x, include,
  exclude, envir)

## S3 method for class 'character,character,character,missing':
classFilter(x, include,
  exclude)

## S3 method for class 'character,character,missing,environment':
classFilter(x, include,
  envir)

## S3 method for class 'character,character,missing,missing':
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
## 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)

## 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