Nothing
#' A helper function to standardize matrices
#'
#' @param X a matrix
#'
#' @returns a list with the standardized matrix, vectors with the centering/scaling values, and a vector with the indices of nonsingular columns
#' @keywords internal
#'
#' @details
#' This function is adapted from https://github.com/pbreheny/ncvreg/blob/master/R/std.R
#' NOTE: this function returns a matrix **in memory**. For standardizing filebacked
#' data, use `big_std()` -- see src/big_standardize.cpp
standardize_in_memory <- function(X, tocenter = TRUE) {
if (typeof(X) == "integer") storage.mode(X) <- "double"
if (!inherits(X, "matrix")) {
if (is.numeric(X)) {
X <- matrix(as.double(X), ncol = 1)
} else {
tmp <- try(X <- stats::model.matrix(~0+., data = X), silent = TRUE)
if (inherits(tmp, "try-error")) stop("X must be a matrix or able to be coerced to a matrix", call. = FALSE)
}
}
standardization <- .Call("in_mem_std", X, tocenter, PACKAGE = "plmmr")
dimnames(standardization[[1]]) <- dimnames(X)
ns <- which(standardization[[3]] > 1e-6)
std_X <- standardization[[1]]
std_X_details <- list()
# difference from ncvreg::std(): instead of removing singular columns,
# this version fills constant columns with 0s to preserve the dimension
# of the matrix.
std_X[, -ns] <- 0
attr(std_X, "center") <- std_X_details$center <- standardization[[2]]
attr(std_X, "scale") <- std_X_details$scale <- standardization[[3]]
attr(std_X, "nonsingular") <- std_X_details$ns <- ns
res <- list(std_X = std_X[, ],
std_X_details = std_X_details)
return(res)
}
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.