An S4 class to represent a relative frequency matrix (i.e. the fraction of times a given datum occurs in a dataset).

CompositionMatrix(data = 0, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

Arguments

data

an optional data vector (including a list or expression vector). Non-atomic classed R objects are coerced by as.vector and all attributes discarded.

nrow

the desired number of rows.

ncol

the desired number of columns.

byrow

logical. If FALSE (the default) the matrix is filled by columns, otherwise the matrix is filled by rows.

dimnames

A dimnames attribute for the matrix: NULL or a list of length 2 giving the row and column names respectively. An empty list is treated as NULL, and a list of length one as row names. The list can be named, and the list names will be used as names for the dimensions.

Author

N. Frerebeau

Examples

## Create an incidence (presence/absence) matrix
## Data will be coerced with as.logical()
A <- IncidenceMatrix(data = sample(0:1, 100, TRUE, c(1, 1/3)), nrow = 20)
## Create a count data matrix
B <- CountMatrix(data = sample(0:10, 100, TRUE), nrow = 20)

## Access
dim(B) # Get the matrix dimensions
#> [1] 20  5
row(B) # Get the row indexes
#>       [,1] [,2] [,3] [,4] [,5]
#>  [1,]    1    1    1    1    1
#>  [2,]    2    2    2    2    2
#>  [3,]    3    3    3    3    3
#>  [4,]    4    4    4    4    4
#>  [5,]    5    5    5    5    5
#>  [6,]    6    6    6    6    6
#>  [7,]    7    7    7    7    7
#>  [8,]    8    8    8    8    8
#>  [9,]    9    9    9    9    9
#> [10,]   10   10   10   10   10
#> [11,]   11   11   11   11   11
#> [12,]   12   12   12   12   12
#> [13,]   13   13   13   13   13
#> [14,]   14   14   14   14   14
#> [15,]   15   15   15   15   15
#> [16,]   16   16   16   16   16
#> [17,]   17   17   17   17   17
#> [18,]   18   18   18   18   18
#> [19,]   19   19   19   19   19
#> [20,]   20   20   20   20   20
col(B, as.factor = TRUE) # Get the column indexes
#>       [,1] [,2] [,3] [,4] [,5]
#>  [1,] col1 col2 col3 col4 col5
#>  [2,] col1 col2 col3 col4 col5
#>  [3,] col1 col2 col3 col4 col5
#>  [4,] col1 col2 col3 col4 col5
#>  [5,] col1 col2 col3 col4 col5
#>  [6,] col1 col2 col3 col4 col5
#>  [7,] col1 col2 col3 col4 col5
#>  [8,] col1 col2 col3 col4 col5
#>  [9,] col1 col2 col3 col4 col5
#> [10,] col1 col2 col3 col4 col5
#> [11,] col1 col2 col3 col4 col5
#> [12,] col1 col2 col3 col4 col5
#> [13,] col1 col2 col3 col4 col5
#> [14,] col1 col2 col3 col4 col5
#> [15,] col1 col2 col3 col4 col5
#> [16,] col1 col2 col3 col4 col5
#> [17,] col1 col2 col3 col4 col5
#> [18,] col1 col2 col3 col4 col5
#> [19,] col1 col2 col3 col4 col5
#> [20,] col1 col2 col3 col4 col5
#> Levels: col1 col2 col3 col4 col5
nrow(B) # Get the number of rows
#> [1] 20
ncol(B) # Get the number of columns
#> [1] 5
dimnames(B) # Get the dimension names
#> [[1]]
#>  [1] "row1"  "row2"  "row3"  "row4"  "row5"  "row6"  "row7"  "row8"  "row9" 
#> [10] "row10" "row11" "row12" "row13" "row14" "row15" "row16" "row17" "row18"
#> [19] "row19" "row20"
#> 
#> [[2]]
#> [1] "col1" "col2" "col3" "col4" "col5"
#> 
rownames(B) <- LETTERS[1:20] # Set the row names
rownames(B) # Get the rownames
#>  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
#> [20] "T"
colnames(B) <- letters[21:25] # Set the column names
colnames(B) # Get the column names
#> [1] "u" "v" "w" "x" "y"

## Subset
B[[1, 1]] # Get the first value
#> [1] 1
B[1] # Get the first value
#> [1] 1
B[, ] # Get all values
#> <CountMatrix: 20 x 5>
#>    u  v  w x y
#> A  1  6  1 3 8
#> B  5  6  2 1 0
#> C  6  7  2 5 6
#> D  9  1  0 4 3
#> E  5  7  9 9 7
#> F  4  8  6 9 9
#> G  6  2  4 2 7
#> H  2  8  3 3 6
#> I  0 10  0 5 8
#> J  4  5  2 1 8
#> K  0  8  6 8 9
#> L  5  4  0 4 8
#> M  0  2  5 2 2
#> N  0  1 10 1 8
#> O  1  6  6 4 2
#> P  4  3 10 9 0
#> Q  6 10  9 3 6
#> R 10  3  7 2 4
#> S  0  1  5 7 8
#> T  3  8  0 3 3
B[1, , drop = FALSE] # Get the first row
#> <CountMatrix: 1 x 5>
#>   u v w x y
#> A 1 6 1 3 8
B[, 1:3] # Get the first three column
#> <CountMatrix: 20 x 3>
#>    u  v  w
#> A  1  6  1
#> B  5  6  2
#> C  6  7  2
#> D  9  1  0
#> E  5  7  9
#> F  4  8  6
#> G  6  2  4
#> H  2  8  3
#> I  0 10  0
#> J  4  5  2
#> K  0  8  6
#> L  5  4  0
#> M  0  2  5
#> N  0  1 10
#> O  1  6  6
#> P  4  3 10
#> Q  6 10  9
#> R 10  3  7
#> S  0  1  5
#> T  3  8  0