The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
cpp11armadillo
, as of v0.5.0, supports the dgCMatrix
class from the Matrix
package. This class is a sparse matrix class that stores the matrix in a compressed column format.
The strategy for an efficient conversion from R to C++ and vice versa is to create an indexing of the non-zero elements of the input matrix and then use this indexing to create dgCMatrix
(R) or SpMat
(Armadillo/C++) object.
Note that cpp11
does not provide sparse matrices as it is the case for the dense data types doubles_matrix<>
or integers_matrix<>
. cpp11armadillo
uses SEXP
to provide a method to convert dgCMatrix
objects to SpMat
objects and vice versa using some properties of S4 objects.
Here is an example of how to convert a dgCMatrix
object to a SpMat
object and re-import it to R:
cpp11::register]] SEXP sum_matrices_(SEXP x) {
[[// Convert from dgCMatrix to SpMat
double> A = as_SpMat(x);
SpMat<
// Create a matrix B with a diagonal of random numbers
double> B(A.n_rows, A.n_cols);
SpMat<for (uword i = 0; i < A.n_rows; ++i) {
double>();
B(i, i) = randu<
}
// Add the two matrices
A += B;
// Convert back to dgCMatrix and return
return as_dgCMatrix(A);
}
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.