# r2dtable: Random 2-way Tables with Given Marginals

Description Usage Arguments Value References Examples

## Description

Generate random 2-way tables with given marginals using Patefield's algorithm.

## Usage

 `1` ```r2dtable(n, r, c) ```

## Arguments

 `n` a non-negative numeric giving the number of tables to be drawn. `r` a non-negative vector of length at least 2 giving the row totals, to be coerced to `integer`. Must sum to the same as `c`. `c` a non-negative vector of length at least 2 giving the column totals, to be coerced to `integer`.

## Value

A list of length `n` containing the generated tables as its components.

## References

Patefield, W. M. (1981). Algorithm AS 159: An efficient method of generating r x c tables with given row and column totals. Applied Statistics, 30, 91–97. \Sexpr[results=rd,stage=build]{tools:::Rd_expr_doi("10.2307/2346669")}.

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17``` ```## Fisher's Tea Drinker data. TeaTasting <- matrix(c(3, 1, 1, 3), nrow = 2, dimnames = list(Guess = c("Milk", "Tea"), Truth = c("Milk", "Tea"))) ## Simulate permutation test for independence based on the maximum ## Pearson residuals (rather than their sum). rowTotals <- rowSums(TeaTasting) colTotals <- colSums(TeaTasting) nOfCases <- sum(rowTotals) expected <- outer(rowTotals, colTotals, "*") / nOfCases maxSqResid <- function(x) max((x - expected) ^ 2 / expected) simMaxSqResid <- sapply(r2dtable(1000, rowTotals, colTotals), maxSqResid) sum(simMaxSqResid >= maxSqResid(TeaTasting)) / 1000 ## Fisher's exact test gives p = 0.4857 ... ```