一般来说,我对 Rcpp、RcppEigen 和通过 C++ 实现 R 非常陌生。 here 阅读文档或查找有关该主题的任何详尽/直观的教程对我来说既困难又令人困惑。所以我想问一下这个包的一些基础知识。
假设我在 R 中有一个稀疏矩阵 A、一个密集矩阵 B 和一个向量 y:
library(Matrix)
A <- matrix(c(0, 1, 3, 0, 4, 0, 0, 0, 6), ncol = 3)
A <- Matrix(A, sparse = T)
B <- matrix(1:9, ncol=3)
y <- 5:3
我想在cpp文件中写一些函数来做A、B和y的转置、跟踪、乘法和叉积,但我总是出错,因为我定义了错误的输出类或者我不知道正确的方法每个班级。例如,
// [[Rcpp::export]]
SEXP cpp_t(const Eigen::Map<Eigen::MatrixXd> A){
Eigen::MatrixXd C = A.transpose();
return Rcpp::wrap(C);
}
cpp_t(B)
给我错误
Wrong R type for mapped matrix
,这让我真的很困惑。你能帮我得到 A、B 的转置,A、B 的迹,A%*%B
、A%*%y
、B%*%y
和 as.matrix(y)
与 RcppEigen 的乘法吗?