# dist2: Calculate an n-by-n matrix by applying a function to all... In genefilter: genefilter: methods for filtering genes from high-throughput experiments

## Description

Calculate an n-by-n matrix by applying a function to all pairs of columns of an m-by-n matrix.

## Usage

 `1` ``` dist2(x, fun, diagonal=0) ```

## Arguments

 `x` A matrix. `fun` A symmetric function of two arguments that may be columns of `x`. `diagonal` The value to be used for the diagonal elements of the resulting matrix.

## Details

With the default value of `fun`, this function calculates for each pair of columns of `x` the mean of the absolute values of their differences (which is proportional to the L1-norm of their difference). This is a distance metric.

The implementation assumes that `fun(x[,i], x[,j])` can be evaluated for all pairs of `i` and `j` (see examples), and that `fun` is symmetric, i.e. `fun(a, b) = fun(b, a)`. `fun(a, a)` is not actually evaluated, instead the value of `diagonal` is used to fill the diagonal elements of the returned matrix.

Note that `dist` computes distances between rows of `x`, while this function computes relations between columns of `x` (see examples).

## Value

A symmetric matrix of size `n x n`.

## Author(s)

Wolfgang Huber, James Reid

## Examples

 ```1 2 3 4 5 6 7 8 9``` ``` # example matrix z = matrix(1:15693, ncol=3) matL1 = dist2(z) matL2 = dist2(z, fun=function(a,b) sqrt(sum((a-b)^2, na.rm=TRUE))) euc = as.matrix(dist(t(z))) stopifnot(identical(dim(matL2), dim(euc)), all(euc==matL2)) ```

genefilter documentation built on Oct. 31, 2019, 3:15 a.m.