invertMap {affxparser} | R Documentation

## Inverts a read or a write map

### Description

Inverts a read or a write map.

### Usage

    invertMap(map, ...)

### Arguments

`map` | An `integer` `vector`.
`...` | Not used.

### Details

An map is defined to be a `vector` of n with unique finite values in [1,n]. Finding the inverse of a map is the same as finding the rank of each element, cf. `order`(). However, this method is much faster, because it utilizes the fact that all values are unique and in [1,n]. Moreover, for any map it holds that taking the inverse twice will result in the same map.

### Value

Returns an `integer` `vector`.

### Author(s)

Henrik Bengtsson (http://www.braju.com/R/)

### See Also

To generate an optimized write map for a CDF file, see `readCdfUnitsWriteMap`().

### Examples

    # Simulate a read map for a chip with 2.6 million cells
    nbrOfCells <- 2600000
    readMap <- sample(1:nbrOfCells, size=nbrOfCells)

    # Get the corresponding write map
    writeMap <- invertMap(readMap)

    # A map inverted twice should be equal itself
    stopifnot(identical(invertMap(writeMap), readMap))

    # Another example illustrating that the write map is the
    # inverse of the read map
    idx <- sample(1:nbrOfCells, size=1000)
    stopifnot(identical(writeMap[readMap[idx]], idx))

    # invertMap() is much faster than order()
    t1 <- system.time(invertMap(readMap))[3]
    cat(sprintf("invertMap()  : %5.2fs [ 1.00x]\n", t1))

    t2 <- system.time(writeMap2 <- sort.list(readMap, na.last=NA, method="quick"))[3]
    cat(sprintf("'quick sort' : %5.2fs [%5.2fx]\n", t2, t2/t1))
    stopifnot(identical(writeMap, writeMap2))

    t3 <- system.time(writeMap2 <- order(readMap))[3]
    cat(sprintf("order()      : %5.2fs [%5.2fx]\n", t3, t3/t1))
    stopifnot(identical(writeMap, writeMap2))

    # Clean up
    rm(nbrOfCells, idx, readMap, writeMap, writeMap2)

[Package affxparser version 1.10.2 Index]