References:
- http://www.analytictech.com/mb876/handouts/distance_and_correlation.htm
- http://bioconductor.org/help/publications/books/bioinformatics-and-computational-biology-solutions/
Code:
standardize <- function(z) {
rowmed <- apply(z, 1, median)
rowmad <- apply(z, 1, mad)
rv <- sweep(z, 1, rowmed)
rv <- sweep(rv, 1, rowmad, "/")
return(rv)
}
x <- data.frame(A = rnorm(10), B = rnorm(10) * 20)
cor(x)
A B
A 1.0000000 -0.6746946
B -0.6746946 1.0000000
cor(standardize(x))
A B
A 1 -1
B -1 1
dist(t(x))
A
B 88.64185
dist(t(standardize(x)))
A
B 4.265854