Nothing
quick_install <- function(package, lib, quiet = TRUE) {
opts <- c(
"--data-compress=none",
"--no-byte-compile",
"--no-data",
"--no-demo",
"--no-docs",
"--no-help",
"--no-html",
"--no-libs",
"--use-vanilla",
NULL
)
for (p in package) {
install.packages(
pkgs = p,
lib = lib,
repos = NULL,
type = "source",
quiet = quiet,
INSTALL_opts = paste(opts, collapse = " ")
)
}
}
quick_test <- function() {
identical(Sys.getenv("R_TESTTHAT_QUICK", "false"), "true")
}
quick_test_disable <- function() {
Sys.setenv("R_TESTTHAT_QUICK" = "false")
}
quick_test_enable <- function() {
Sys.setenv("R_TESTTHAT_QUICK" = "true")
}
scrub_environment <- function(x) {
gsub("environment: 0x[0-9a-f]+", "environment: 0x0", x)
}
local_methods <- function(..., frame = parent.frame()) {
generics <- list(...)
methods <- lapply(generics, function(x) as.list(x@methods))
defer(for(i in seq_along(methods)) {
env <- generics[[i]]@methods
rm(list = ls(envir = env), envir = env)
list2env(methods[[i]], envir = env)
}, frame = frame)
invisible()
}
local_S4_class <- function(name, ..., env = parent.frame()) {
out <- methods::setClass(name , contains = "character")
defer(S4_remove_classes(name, env), env)
out
}
# Lightweight equivalent of withr::defer()
defer <- function(expr, frame = parent.frame(), after = FALSE) {
thunk <- as.call(list(function() expr))
do.call(on.exit, list(thunk, TRUE, after), envir = frame)
}
# always returns a named list, even in the empty case.
named_list <- function(...) {
x <- list(...)
names(x) <- names2(x)
x
}
`:=` <- function(sym, val) {
cl <- sys.call()
cl[[1L]] <- quote(`<-`)
stopifnot(is.symbol(cl[[2L]]) && is.call(cl[[3L]]))
cl[[3L]]$name <- as.character(cl[[2L]])
eval.parent(cl)
}
`add<-` <- `+`
dbg <- function(..., .display = utils::str, .file = NULL) {
out <- NULL
exprs <- as.list(substitute(list(...)))[-1L]
if (!is.null(.file)) {
sink(.file, append = TRUE)
on.exit(sink())
}
for (i in seq_len(...length())) {
..i <- as.symbol(sprintf("..%i", i))
if (eval(substitute(missing(..i)))) {
next
}
name <- names(exprs)[[i]]
expr <- deparse1(exprs[[i]])
label <- if (is.null(name)) {
sprintf("`%s`", expr)
} else {
sprintf("(%s) `%s`", name, expr)
}
cat(label, if (identical(.display, utils::str)) ": " else "\n", sep = "")
.display(out <- eval(..i))
}
cl <- sys.call()
filepath <- utils::getSrcFilename(cl)
if (length(filepath)) {
if (!file.exists(filepath) &&
file.exists(file.path("R", filepath))) {
filepath <- file.path("R", filepath)
}
lineno <- utils::getSrcLocation(cl)
if (isNamespaceLoaded("cli")) {
cli <- asNamespace("cli")
loc <- cli$col_grey(cli$style_hyperlink(
sprintf("(from %s:%i)", filepath, lineno),
sprintf("file://%s", normalizePath(filepath, mustWork = FALSE)),
params = c(line = lineno)
))
} else {
loc <- sprintf("(from %s:%i)", filepath, lineno)
}
cat(loc, "\n")
} else {
cat(sprintf("(from call: %s (srcfile missing))\n", trimws(
deparse1(sys.call(-2) %error% sys.call(-1), width.cutoff = 60)
)))
}
invisible(out)
}
`%error%` <- function(x, y) tryCatch(x, error = function(e) y)
drop_attributes <- function(x) {
attributes(x) <- NULL
x
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.