cprod {lazy.tools} R Documentation

## Cartesian product of many vectors and matrices

### Description

Cartesian product of many vectors and matrices

### Usage

```cprod(..., rev = 1, as.data.frame = 0, rownames = 0, colnames = 0)
```

### Arguments

 `...` vectors, factors or matrices Or ... can be a list containing the levels vectors as its elements. `rev` = 0 to make the fist elements of ... change first `as.data.frame` = 1 to make the result a data frame. `rownames` = 1 to return the compressed version as the rownames. `colnames` = 1 to use the names of ... as the colnames.

### Details

When all the inputs are vectors, cprod is equivalent to expand.grid1.
The input matrix will be treated as it is. That is, matrix will be treated as if it is a column vector.
For example, if A and B are matrices, cprod( A, B ) will be
rbind( cbind( repmat(A[1,,drop=0],nrow(B)), B )
, cbind( repmat(A[2,,drop=0],nrow(B)), B ) )

A data frame.

### Examples

```cprod(1:2,3:5)
cprod(1:2,3:4, rev=0)
cprod(matrix(1:6,3,2, byrow=1),1:2)
cprod(matrix(1:6,3,2, byrow=1),matrix(1:4,2,2,byrow=1))

# when ... is a list
ll <- list(a=c("a","b"),bbb=1:3)
cprod(ll, colnames=0)
cprod(ll, colnames=1)

# ANOVA data
levels <- c(2,3)
ll <- lapply(levels,function(x)seq(1:x))
names(ll) <- c("A","B")
data <- cprod(ll, colnames=1)

# generate 3d grid of x0
x0 <- 1:3
ndim <- 3
x <- cprod( rep(list(x0),ndim) )
Print(x)

```

[Package lazy.tools version 0.1.3 Index]