#' @title Normalize a matrix
#'
#' @description Normalize a matrix column-wise by dividing each entry by its corresponding column sum.
#'
#' @details Columns summing to zero are removed by default.
#'
#' @param x a matrix
#' @param removeZero remove columns summing to zero.
#' @return a normalized matrix
#' @export
normalize<-function(x, removeZero=TRUE){
# remove columns with only zeros from matrix, to avoid dividing by a zero
colsums = apply(x,2,sum)
if(removeZero==TRUE){
zero.col.indices=which(colsums==0)
#print(length(zero.col.indices))
if(length(zero.col.indices)>0){
colsums=colsums[setdiff(1:ncol(x),zero.col.indices)]
x=x[setdiff(1:ncol(x),zero.col.indices),]
}
}
for(i in 1:ncol(x)){
x[,i]=x[,i]/colsums[i]
}
x
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.