Cross-product between a Filebacked Big Matrix and a matrix.

big_cprodMat( X, A.row, ind.row = rows_along(X), ind.col = cols_along(X), ncores = 1, block.size = block_size(nrow(X), ncores), center = NULL, scale = NULL ) # S4 method for FBM,matrix crossprod(x, y) # S4 method for FBM,matrix tcrossprod(x, y) # S4 method for matrix,FBM crossprod(x, y) # S4 method for matrix,FBM tcrossprod(x, y)

X | An object of class FBM. |
---|---|

A.row | A matrix with |

ind.row | An optional vector of the row indices that are used.
If not specified, all rows are used. |

ind.col | An optional vector of the column indices that are used.
If not specified, all columns are used. |

ncores | Number of cores used. Default doesn't use parallelism. You may use nb_cores. |

block.size | Maximum number of columns read at once. Default uses block_size. |

center | Vector of same length of |

scale | Vector of same length of |

x | A 'double' FBM or a matrix. |

y | A 'double' FBM or a matrix. |

\(X^T \cdot A\).

Large matrix computations are made block-wise and won't be parallelized
in order to not have to reduce the size of these blocks.
Instead, you may use Microsoft R Open
or OpenBLAS in order to accelerate these block matrix computations.
You can also control the number of cores used with
`bigparallelr::set_blas_ncores()`

.

X <- big_attachExtdata() n <- nrow(X) m <- ncol(X) A <- matrix(0, n, 10); A[] <- rnorm(length(A)) test <- big_cprodMat(X, A) true <- crossprod(X[], A) all.equal(test, true)#> [1] TRUE#> [1] TRUE# subsetting ind.row <- sample(n, n/2) ind.col <- sample(m, m/2) tryCatch(test2 <- big_cprodMat(X, A, ind.row, ind.col), error = function(e) print(e))#> <simpleError: Incompatibility between dimensions. #> 'ind.row' and 'rows_along(A.row)' should have the same length.># returns an error. You need to use the subset of A: test2 <- big_cprodMat(X, A[ind.row, ], ind.row, ind.col) true2 <- crossprod(X[ind.row, ind.col], A[ind.row, ]) all.equal(test2, true2)#> [1] TRUE