classFilter(x, include, exclude, envir)

# S4 method for character,character,character,environment
classFilter(x,
  include, exclude, envir)

# S4 method for character,character,character,missing
classFilter(x, include,
  exclude)

# S4 method for character,character,missing,environment
classFilter(x, include,
  envir)

# S4 method for 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.

Note

inherits is used internally to check the object class, which can, in some cases, return results inconsistent with is. See http://stackoverflow.com/a/27923346/1380598. These (known) cases are checked manually and corrected.

Examples

# 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)
# }
## 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)
#> [1] "a" "b"
classFilter(ls(e), include = "numeric", envir = e)
#> [1] "d" "f"
classFilter(ls(e), include = "numeric", exclude = "integer", envir = e)
#> [1] "d"
classFilter(ls(e), include = "lm", envir = e)
#> [1] "g" "h"
classFilter(ls(e), include = "lm", exclude = "glm", envir = e)
#> [1] "g"
rm(a, b, d, f, g, h, envir = e) rm(e)