Operations

2026-05-13

Introduction

This vignette introduces the generic functions and operations supported by dbMatrix.

Loading library

library(dbMatrix)
library(Matrix)

dbMatrix generics

dbMatrix objects currently support several statistical matrix operations listed below with support for more coming soon.

βœ… - implemented 🟧 - not yet implemented

dbSparseMatrix dbDenseMatrix
colSums βœ… βœ…
rowSums βœ… βœ…
colMeans βœ… βœ…
rowMeans βœ… βœ…
colSds 🟧 βœ…
rowSds 🟧 βœ…
t βœ… βœ…
mean βœ… βœ…
nrow βœ… βœ…
ncol βœ… βœ…
dims βœ… βœ…
head βœ… βœ…
tail βœ… βœ…
…

dbSparse Matrix Operations

Create test data

Let’s create a sparse matrix for demonstration:

## Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
##   ..@ i       : int [1:500] 1 7 15 26 32 38 48 81 90 93 ...
##   ..@ p       : int [1:51] 0 12 22 33 38 46 54 66 80 89 ...
##   ..@ Dim     : int [1:2] 100 50
##   ..@ Dimnames:List of 2
##   .. ..$ : chr [1:100] "gene_1" "gene_2" "gene_3" "gene_4" ...
##   .. ..$ : chr [1:50] "cell_1" "cell_2" "cell_3" "cell_4" ...
##   ..@ x       : num [1:500] 4 7 5 7 3 8 4 5 4 7 ...
##   ..@ factors : list()
## 6 x 50  dbMatrix of class "dbSparseMatrix"
## [[ Colnames 'cell_1', 'cell_2', 'cell_3' ... suppressing 44 ...'cell_48', 'cell_49', 'cell_50' ]]
##                                                                   
## gene_1         .         . . . .         . 5.0000000         . . .
## gene_2 4.0000000         . . . .         .         .         . . .
## gene_3         . 7.0000000 . . . 8.0000000         . 3.0000000 . .
## gene_4         .         . . . .         .         .         . . .
## gene_5         .         . . . .         . 6.0000000 5.0000000 . .
## gene_6         .         . . . .         .         .         . . .

transpose

## 50 x 100  dbMatrix of class "dbSparseMatrix"
## [[ Colnames 'gene_1', 'gene_2', 'gene_3' ... suppressing 94 ...'gene_98', 'gene_99', 'gene_100' ]]
##                                                                            
## cell_1  . 4.0000000         . . .         .         . 7.0000000 .         .
## cell_2  .         . 7.0000000 . .         .         .         . . 7.0000000
## cell_3  .         .         . . .         .         .         . .         .
## 
## ......suppressing 90 columns and 44 rows
## 
## cell_48 .         .         . . .         . 8.0000000         . .         .
## cell_49 .         .         . . . 2.0000000         . 8.0000000 .         .
## cell_50 .         .         . . .         .         .         . .         .

colMeans

##  cell_1  cell_2  cell_3  cell_4  cell_5  cell_6  cell_7  cell_8  cell_9 cell_10 
##    0.66    0.63    0.62    0.24    0.48    0.45    0.66    0.69    0.57    0.77 
##  [ reached 'max' / getOption("max.print") -- omitted 40 entries ]

colSums

##  cell_1  cell_2  cell_3  cell_4  cell_5  cell_6  cell_7  cell_8  cell_9 cell_10 
##      66      63      62      24      48      45      66      69      57      77 
##  [ reached 'max' / getOption("max.print") -- omitted 40 entries ]

rowMeans

##  gene_1  gene_2  gene_3  gene_4  gene_5  gene_6  gene_7  gene_8  gene_9 gene_10 
##    0.50    0.20    0.68    0.08    0.32    0.24    0.58    0.76    0.88    0.62 
##  [ reached 'max' / getOption("max.print") -- omitted 90 entries ]

rowSums

##  gene_1  gene_2  gene_3  gene_4  gene_5  gene_6  gene_7  gene_8  gene_9 gene_10 
##      25      10      34       4      16      12      29      38      44      31 
##  [ reached 'max' / getOption("max.print") -- omitted 90 entries ]

dim

## [1] 100  50
## [1] 100  50

Check results are equivalent

Click to expand

  ## [1] TRUE
  ## [1] TRUE
  ## [1] TRUE
  ## [1] TRUE

dbDenseMatrix Operations

# Create a dense matrix directly
set.seed(42)
mat <- matrix(rnorm(100), nrow = 10, ncol = 10)
rownames(mat) <- paste0("row_", 1:10)
colnames(mat) <- paste0("col_", 1:10)

# Create dbDenseMatrix
con2 <- DBI::dbConnect(duckdb::duckdb(), ":memory:")
dense <- dbMatrix(
  value = mat,
  con = con2,
  name = "dense_matrix",
  class = "dbDenseMatrix",
  overwrite = TRUE
)

# preview
dense
## 10 x 10  dbMatrix of class "dbDenseMatrix"
##                                                                         
## row_1   1.3709584  1.3048697 -0.3066386  0.4554501  0.2059986  0.3219253
## row_2  -0.5646982  2.2866454 -1.7813084  0.7048373 -0.3610573 -0.7838389
## row_3   0.3631284 -1.3888607 -0.1719174  1.0351035  0.7581632  1.5757275
## 
## ...... suppressing 4 rows ......
## 
## row_8  -0.0946590 -2.6564554 -1.7631631 -0.8509076  1.4441013  0.0898329
## row_9   2.0184237 -2.4404669  0.4600974 -2.4142076 -0.4314462 -2.9930901
## row_10 -0.0627141  1.3201133 -0.6399949  0.0361226  0.6556479  0.2848830

transpose

## 10 x 10  dbMatrix of class "dbDenseMatrix"
## [[ Colnames 'row_1', 'row_2', 'row_3' ... suppressing 4 ...'row_8', 'row_9', 'row_10' ]]
##                                                                         
## col_1   1.3709584 -0.5646982  0.3631284  0.6328626  0.4042683 -0.1061245
## col_2   1.3048697  2.2866454 -1.3888607 -0.2787888 -0.1333213  0.6359504
## col_3  -0.3066386 -1.7813084 -0.1719174  1.2146747  1.8951935 -0.4304691
## 
## ...... suppressing 4 rows ......
## 
## col_8  -1.0431189 -0.0901864  0.6235182 -0.9535234 -0.5428288  0.5809965
## col_9   1.5127070  0.2579214  0.0884402 -0.1208965 -1.1943289  0.6119969
## col_10  1.3921164 -0.4761739  0.6503486  1.3911105 -1.1107889 -0.8607926

colMeans

##       col_1       col_2       col_3       col_4       col_5       col_6 
##  0.54729677 -0.16345673 -0.17807953 -0.36390406 -0.02021535  0.01839391 
##       col_7       col_8       col_9      col_10 
##  0.53907680 -0.21787537  0.25110630 -0.08719458

colSums

##      col_1      col_2      col_3      col_4      col_5      col_6      col_7 
##  5.4729677 -1.6345673 -1.7807953 -3.6390406 -0.2021535  0.1839391  5.3907680 
##      col_8      col_9     col_10 
## -2.1787537  2.5110630 -0.8719458

rowMeans

##       row_1       row_2       row_3       row_4       row_5       row_6 
##  0.48470333 -0.06226284  0.41154753  0.25924440 -0.21826635  0.07264603 
##       row_7       row_8       row_9      row_10 
## -0.01914153 -0.39709480 -0.47524086  0.26901325

rowSums

##      row_1      row_2      row_3      row_4      row_5      row_6      row_7 
##  4.8470333 -0.6226284  4.1154753  2.5924440 -2.1826635  0.7264603 -0.1914153 
##      row_8      row_9     row_10 
## -3.9709480 -4.7524086  2.6901325

mean

## [1] 0.03251482

dim

## [1] 10 10

Cleanup

DBI::dbDisconnect(con, shutdown = TRUE)
DBI::dbDisconnect(con2, shutdown = TRUE)
options(old_options)

Session Info

sessionInfo()
## R version 4.5.2 (2025-10-31)
## Platform: x86_64-pc-linux-gnu
## Running under: AlmaLinux 8.10 (Cerulean Leopard)
## 
## Matrix products: default
## BLAS/LAPACK: FlexiBLAS NETLIB;  LAPACK version 3.12.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: America/New_York
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] Matrix_1.7-4   dbMatrix_0.1.0
## 
## loaded via a namespace (and not attached):
##  [1] bit_4.6.0             jsonlite_2.0.0        dplyr_1.1.4          
##  [4] compiler_4.5.2        tidyselect_1.2.1      Rcpp_1.1.0           
##  [7] blob_1.2.4            nanoarrow_0.7.0-1     pins_1.4.1           
## [10] assertthat_0.2.1      dbProject_0.0.0.9002  jquerylib_0.1.4      
## [13] arrow_22.0.0          yaml_2.3.10           fastmap_1.2.0        
## [16] lattice_0.22-7        R6_2.6.1              generics_0.1.4       
## [19] knitr_1.50            tibble_3.3.0          MatrixGenerics_1.22.0
## [22] DBI_1.2.3             bslib_0.9.0           pillar_1.11.1        
## [25] connections_0.2.1     rlang_1.1.6           cachem_1.1.0         
## [28] xfun_0.54             sass_0.4.10           bit64_4.6.0-1        
## [31] cli_3.6.5             withr_3.0.2           magrittr_2.0.4       
## [34] digest_0.6.38         grid_4.5.2            rscontract_0.1.2     
## [37] dbplyr_2.5.1          lifecycle_1.0.4       vctrs_0.6.5          
## [40] evaluate_1.0.5        glue_1.8.0            data.table_1.17.8    
## [43] duckdb_1.4.2          rmarkdown_2.30        purrr_1.2.0          
## [46] matrixStats_1.5.0     tools_4.5.2           pkgconfig_2.0.3      
## [49] htmltools_0.5.8.1

mirror server hosted at Truenetwork, Russian Federation.