#' Imputes missing values from normal distribution
#'
#' @param data expression data
#' @param threshold threshold for missing values
#' @param shift down shift of normal distribution in standard deviations
#' @param width width of normal distribution in standard deviations
#' @param return should data frame be returned
#' @param save ahould data frame be saved
#' @param name name to save under
#'
#' @return
#' @export
#'
#'
impute_normd <- function(data, threshold = 0.5, shift = 1.8, width = 0.3, return = T, save = F, name) {
data <- cm0(data, threshold = threshold)
data1 <- data
data[data == 0] <- NA
data <- log2(data)
for(i in 1:nrow(data)) {
for(j in 1:ncol(data)) {
if(is.na(data[i, j])) {
data1[i, j] <- 2 ^ rnorm(1,
mean = mean(na.omit(data[, j])) - shift * sd(na.omit(data[, j])),
sd = width * sd(na.omit(data[, j])))
}
}
}
if(save) {
saveThis(data1, name = name, destination = "dat")
}
if(return) {
data1
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.