Learn R Programming

tableMatrix package

tableMatrix package provides two classes extending data.table class. Simple tableList class wraps data.table and any additional structures together. More complex tableMatrix class combines data.table and matrix.

Installation

From CRAN:

install.packages("tableMatrix")

From github:

# install.packages("devtools")
devtools::install_github("InferenceTechnologies/tableMatrix")

tableList class

Motivation

Goal is to wrap data.table class and other structures together and preserve data.table behaviour.

Example

Combine data and linear model into one object.

data(chickwts)
 
# Bundle chickwts data.frame together with a linear model
TL <- tableList(chickwts, lm(weight~feed, chickwts))

# tableList behaves like a data.table  
mean(TL[feed=="casein", weight])
#> [1] 323.5833

# Aid part of the tableList object carries the linear model
aid(TL)
#> 
#> Call:
#> lm(formula = weight ~ feed, data = chickwts)
#> 
#> Coefficients:
#>   (Intercept)  feedhorsebean    feedlinseed   feedmeatmeal    feedsoybean  
#>       323.583       -163.383       -104.833        -46.674        -77.155  
#> feedsunflower  
#>         5.333

tableMatrix class

Motivation

Let’s have a dataset with the following structure: first set of columns of varying types is intented as meta data, second set of columns of the same type is intended as main data. tableMatrix stores meta data as a data.table and main data as a matrix. It also keeps track of dimensions of main data, thus allowing to combine rows of varying lengths into one object. As in tableList, tableMatrix can carry any additional aid data.

Example

Working with bitmaps of different sizes. Datasets images8By8 and images10By10 contain 8x8 and 10x10 images in the form of vectors. For each row first three columns represent image meta data, remaining columns represent the image itself. For more information see ?images8By8.

# Load datasets
data(images8By8)
data(images10By10)

# Create a signle tableMatrix object from both datasets
# First 3 columns used as meta data, the rest as main data with corresponding dimensions
TM <- tableMatrix(list(images8By8, images10By10),
list(1:3, 1:3), list(c(4:ncol(images8By8)),c(4:ncol(images10By10))), list(c(8,8), c(10,10)))

# Default print displays the table (meta data) part
TM
#>      direction dimX dimY
#>   1:      down    8    8
#>   2:      down    8    8
#>   3:      down    8    8
#>   4:      down    8    8
#>   5:      down    8    8
#>  ---                    
#> 176:      both   10   10
#> 177:      both   10   10
#> 178:      both   10   10
#> 179:      both   10   10
#> 180:      both   10   10

# Number of matrices stored in the matrix (main data) part
length(mat(TM))
#> [1] 2

# Dimensions of the matrix part
matDim(TM)
#>    tm.matN tm.matDim1 tm.matDim2
#> 1:       1          8          8
#> 2:       2         10         10

# Aid part is empty
aid(TM)
#> list()


# Image data for first row
img <- getRow(TM, 1)

# Restoring dimensions of the image
dim(img) <- getRowDim(TM, 1)

# Visualising the image
image(img, axes=F)

Let’s create a heat map

# Subsetting via bracket passed to the table (meta data) part
# We choose first matrix type, down direction
TM1down <- TM[.(1)][direction=="down"]

# One matrix in the matrix part of TM1down
length(mat(TM1down))
#> [1] 1

# One dimension row
matDim(TM1down)
#>    tm.matN tm.matDim1 tm.matDim2
#> 1:       1          8          8

# Heatmap
imgHeat <- colMeans(mat(TM1down, 1))

# Restoring dimensions of the heatmap
dim(imgHeat) <- getRowDim(TM1down, 1)

# Visualising heatmap
image(imgHeat, axes=F)

Copy Link

Version

Install

install.packages('tableMatrix')

Monthly Downloads

208

Version

0.82.0

License

GPL-2

Maintainer

Petr Lenhard

Last Published

June 26th, 2018

Functions in tableMatrix (0.82.0)

dataType.tableList

Get or set dataType attribute
dimnames.tableList

Dimension names
dim.tableList

Dimensions
images8By8

Images of distributions
rbind.tableList

Combine by rows
is.tableList

tableList test
rbind.tableMatrix

Combine by rows
cbind.tableList

Column binding
getRow

S3 tableMatrix generic to get or set row from matrix attribute
getRow.tableMatrix

Get or set row from the matrix attribute
getRowDim

S3 tableMatrix generic to get row dim
tableList

tableList constructor
tableMatrix

tableMatrix constructor
copy.tableMatrix

Copy
dataType

S3 tableMatrix generic to get or set dataType attribute
print.tableList

Print
copy.tableList

Copy
mat.tableMatrix

Get or set matrix attribute
getRowDim.tableMatrix

Get row dimensions
matDim

S3 tableMatrix generic to get or set matDim attribute
aid.tableList

Get or set aid attribute
getRowRepo

S3 tableMatrix generic to get row repo for matrix attribute
aid

S3 tableMatrix generic to get or set aid attribute
getRowRepo.tableMatrix

Get row repo
tab.tableList

Get or set table attribute
tab.tableMatrix

Get or set table attribute
images10By10

Images of distributions
print.tableMatrix

Print
matDim.tableMatrix

Get or set matDim attribute
merge.tableList

Merging tableList
[[.tableList

Double bracket
tab

S3 tableMatrix generic to get or set table attribute
is.tableMatrix

tableMatrix test
mat

S3 tableMatrix generic to get or set matrix attribute
[.tableList

Bracket
[.tableMatrix

Bracket