#' Creates a scale
#' @param d a
#' @importFrom stats sd
#' @export ScaleCreate
ScaleCreate <- function(d){
means <- apply(d,2,mean,na.rm=T)
sds <- apply(d,2,sd,na.rm=T)
retval <- list(
m=means,
sd=sds
)
class(retval) <- "Scale"
return(retval)
}
#' Applies as scale
#' @param d a data frame
#' @param s scale
#' @import data.table
#' @export ScaleApply
ScaleApply <- function(d,s){
if(!"Scale" %in% class(s)) stop("s is not a Scale")
if(data.table::is.data.table(d)){
for(i in 1:ncol(d)){
n <- names(d)[i]
d[,(n):=(get(n)-s$m[i])/s$sd[i]]
}
} else if(is.data.frame(d)){
for(i in 1:ncol(d)){
d[,i] <- (d[,i]-s$m[i])/s$sd[i]
}
} else if(is.matrix(d)){
for(i in 1:ncol(d)){
d[,i] <- (d[,i]-s$m[i])/s$sd[i]
}
} else (
stop("is not data.table, data.frame, or matrix")
)
return(d)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.