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)
Character vector of object names to filter, possibly from ls
.
Class(es) to include, as a character vector.
Optional class(es) to exclude, as a character vector.
The environment ins which to search for objects. Default is the calling environment.
Vector of object names matching the class filter.
inherits()
is used internally to check the object class,
which can, in some cases, return results inconsistent with is
.
See https://stackoverflow.com/a/27923346/1380598.
These (known) cases are checked manually and corrected.
## 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 (can be omitted if .GlobalEnv)
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)