| 1 | permute.residuals(mat, mod, mod0, iterations = 100, p_samples = 1, mc.cores = 12)
 | 
| mat | |
| mod | |
| mod0 | |
| iterations | |
| p_samples | |
| mc.cores | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | ##---- Should be DIRECTLY executable !! ----
##-- ==>  Define data, use random,
##--	or do  help(data=index)  for the standard data sets.
## The function is currently defined as
function (mat, mod, mod0, iterations = 100, p_samples = 1, mc.cores = 12) 
{
    stopifnot(nrow(mod) == ncol(mat))
    reduced_lm = lmFit(mat, mod0)
    reduced_residuals = residuals(reduced_lm, mat)
    reduced_fitted = fitted(reduced_lm)
    fit = lmFit(mat, mod)
    size = p_samples * nrow(mod)
    coef.name = setdiff(colnames(mod), colnames(mod0))
    beta.orig = coefficients(fit)[, coef.name]
    rm(reduced_lm, fit)
    gc()
    nc = ncol(reduced_residuals)
    beta.list = mclapply(1:iterations, function(ix) {
        if (p_samples < 1) {
            sub_ids = sample.int(nc, size = size)
        }
        else {
            sub_ids = 1:nc
        }
        mat_sim = reduced_fitted[, sub_ids] + reduced_residuals[, 
            sample(sub_ids)]
        coefficients(lmFit(mat_sim, mod[sub_ids, ]))[, coef.name]
    }, mc.cores = mc.cores)
    beta = matrix(NA, nrow(mat), ncol = iterations)
    for (i in 1:iterations) {
        beta[, i] = beta.list[[i]]
    }
    df = data.frame(pvalue = unlist(lapply(1:nrow(beta), function(i) {
        row = beta[i, ]
        val = ecdf(row)(beta.orig[i])
        max(min(val, 1 - val) * 2, 1/length(row))
    })), beta.orig = beta.orig)
    rownames(df) = rownames(mat)
    df
  }
 | 
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.