从列表中加载r中的稀疏矩阵

use*_*389 3 r sparse-matrix

嗨我有一个文件结构如下

12    45    56
34    65    31
12    23    43
Run Code Online (Sandbox Code Playgroud)

等我有一个庞大的数据集

所以我有3列的文本文件,但我想创建稀疏矩阵的方式是每行说12 45 56 .....第一个数字即行第二个数字,即45是列和第三个数字(即56)是稀疏矩阵的第12行和第45列的值

我做了以下事情

>x = scan('data.txt',what=list(integer(),integer(),numeric()))
Read 61944406 records

> library('Matrix')
Loading required package: lattice
N
> N= sparseMatrix(i=x[[1]],j=x[[2]],x=x[[3]])
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误

Error in validObject(r) : 
invalid class “dgTMatrix” object: all row indices (slot 'i') must be between 0 and nrow-1 in a TsparseMatrix
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我弄清楚我做错了什么?

小智 5

我遇到了完全相同的问题,在尝试了许多事情后,解决方案来自于阅读sparseMatrix函数的帮助.参数index1指定索引是从1开始还是从0开始.

N= sparseMatrix(i=x[[1]],j=x[[2]],x=x[[3]], index1=FALSE)
Run Code Online (Sandbox Code Playgroud)