#' @noRd
new_data_frame <- function(x = list(), n = NULL) {
if (length(x) != 0 && is.null(names(x))) stop("Elements must be named", call. = FALSE)
lengths <- vapply(x, length, integer(1))
if (is.null(n)) {
n <- if (length(x) == 0 || min(lengths) == 0) 0 else max(lengths)
}
for (i in seq_along(x)) {
if (lengths[i] == n) next
if (lengths[i] != 1) stop("Elements must equal the number of rows or 1", call. = FALSE)
x[[i]] <- rep(x[[i]], n)
}
class(x) <- "data.frame"
attr(x, "row.names") <- .set_row_names(n)
x
}
#' @noRd
`%||%` <- function(x, y)
{
if(is.null(x)) y else x
}
#' @noRd
mid_rescaler <- function(mid) {
function(x, to = c(0, 1), from = range(x, na.rm = TRUE)) {
scales::rescale_mid(x, to, from, mid)
}
}
#' @noRd
rd_aesthetics <- function(type, name) {
obj <- switch(type,
geom = ggplot2:::check_subclass(name, "Geom", env = globalenv()),
stat = ggplot2:::check_subclass(name, "Stat", env = globalenv())
)
aes <- rd_aesthetics_item(obj)
c(
"@section Aesthetics:",
paste0(
"\\code{", type, "_", name, "()} ",
"understands the following aesthetics (required aesthetics are in bold):"
),
"\\itemize{",
paste0(" \\item ", aes),
"}"
)
}
#' @noRd
rd_aesthetics_item <- function(x) {
req <- x$required_aes
all <- union(req, sort(x$aesthetics()))
ifelse(all %in% req,
paste0("\\strong{\\code{", all, "}}"),
paste0("\\code{", all, "}")
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.