# rectUnique: Determine a subset of rectangles with unique, non-overlapping... In benjiec/xcms: LC/MS and GC/MS Data Analysis

## Description

Given a matrix of rectangular areas, this function determines a subset of those rectangles that do not overlap. Rectangles are preserved on a first come, first served basis, with user control over the order in which the rectangles are processed.

## Usage

 `1` ```rectUnique(m, order = seq(length = nrow(m)), xdiff = 0, ydiff = 0) ```

## Arguments

 `m` four column matrix defining rectangular areas `order` order in which matrix columns should be scanned `xdiff` maximum space between overlapping rectangles in x dimension `ydiff` maximum space between overlapping rectangles in y dimension

## Details

The `m` matrix must contain four colums defining the position of rectangle sides in the folloing order: left, right, bottom, top. This function is currently implemented in `C` using a an algorithm with quadratic running time.

## Value

A logical vector indicating which rows should be kept.

## Author(s)

Colin A. Smith, [email protected]

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12``` ```m <- rbind(c(0,4,0,3), c(1,3,2,6), c(3,6,4,6)) plot(0, 0, type = "n", xlim=range(m[,1:2]), ylim=range(m[,3:4])) rect(m[,1], m[,3], m[,2], m[,4]) xcms:::rectUnique(m) # Changing order of processing xcms:::rectUnique(m, c(2,1,3)) # Requiring border spacing xcms:::rectUnique(m, ydiff = 1) # Allowing adjacent boxes xcms:::rectUnique(m, c(2,1,3), xdiff = -0.00001) # Allowing interpenetration xcms:::rectUnique(m, xdiff = -1.00001, ydiff = -1.00001) ```

benjiec/xcms documentation built on May 12, 2019, 11:57 a.m.