- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在努力加快使用 C++ 快速构建一些用于 R 的稀疏矩阵的速度。但是,我似乎无法使用插入方法更改 Eigen 中稀疏矩阵的单个元素并获得正确的类 dgCMatrix 的 R 对象。下面是一个简单的例子。
C++代码是:
#include <RcppEigen.h>
// [[Rcpp::depends(RcppEigen)]]
using Eigen::SparseMatrix; // sparse matrix
// [[Rcpp::export]]
SparseMatrix<double> SimpleSparseMatrix(int n) {
SparseMatrix<double> new_mat(n, n);
new_mat.insert(0, 0) = 2;
Rcpp::Rcout << new_mat << std::endl;
return new_mat;
}
结果 R 是:
> SimpleSparseMatrix(2)
2 0
0 0
2 x 2 sparse Matrix of class "dgCMatrix"
Error in validObject(x) :
invalid class “dgCMatrix” object: last element of slot p must match length of slots i and x
正如您从标准输出中看到的那样,eigen 正在做正确的事情。但是,生成的稀疏矩阵对象格式不正确。事实上,查看它的插槽会显示 p 的无效值:
> foo <- SimpleSparseMatrix(2)
2 0
0 0
> str(foo)
Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
..@ i : int 0
..@ p : int [1:3] 0 2 4
..@ Dim : int [1:2] 2 2
..@ Dimnames:List of 2
.. ..$ : NULL
.. ..$ : NULL
..@ x : num 2
..@ factors : list()
有什么想法可能会出错吗?
最佳答案
在 insert
语句之后添加此语句:
new_mat.makeCompressed();
关于c++ - RcppEigen 稀疏矩阵插入操作给出无效类 “dgCMatrix” 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26694446/
我想将稀疏矩阵转换为类型(行、列、值)的数据框。我发现了诸如 http://r.789695.n4.nabble.com/Converting-sparse-matrix-to-data-frame-
考虑这个简单的稀疏矩阵 > (X (Y <- X != 0) 2 x 2 sparse Matrix of class "lgCMatrix" [1,] : | [2,] | . 为了澄清,所需的输
一旦原始数据无法放入内存,我已将数据帧转换为稀疏矩阵,以避免内存问题并节省空间。 现在,我需要将这个稀疏矩阵转换为真实评级矩阵,以便我可以使用recommenderlab构建推荐器,但我收到以下错误:
我正在努力加快使用 C++ 快速构建一些用于 R 的稀疏矩阵的速度。但是,我似乎无法使用插入方法更改 Eigen 中稀疏矩阵的单个元素并获得正确的类 dgCMatrix 的 R 对象。下面是一个简单的
我正在尝试使用 Matrix 包来读取 MatrixMarket 格式的文件,但我得到了一个 ngTMatrix。我无法转换它,因为没有将 ngTMatrix 转换为 dgCMatrix 的方法。将其
我如何在 R 中合并两个大的(大约 500k 列和行)稀疏矩阵的形式类 dgCMatrix 具有不同的大小(列和行方面)? 简单的例子:我有一个完整的 6x6 矩阵 1 2 3 4 5 6 1 0 0
我查看了 Matrix包和他们的 slides 。我试图理解dgCMatrix中的论点背后的直觉和含义是什么。类(class)。我明白了 @i给出矩阵中非零条目的从零开始的行索引。 @j给出矩阵中非零
我正在使用稀疏矩阵将群组关系数据转换为社交图(两种模式到一种模式, as explained here ),但不确定:如何将稀疏模式矩阵对象强制转换为稀疏整数矩阵? library(data.tabl
首先,我是 XGBoost 的新手。所以请原谅我的愚蠢。 问题是: 如何将 dgCMatrix 分成两个矩阵(例如,训练和测试)?我的目标是使用这些矩阵进行 XGBoost 训练。当我使用 one-h
我是一名优秀的程序员,十分优秀!