3

こんにちは、次のような構造のファイルがあります

12    45    56
34    65    31
12    23    43

私は巨大なデータセットを持っています

したがって、3列のテキストファイルがありますが、疎行列を作成する方法は、各行に12 45 56 .....最初の番号、つまり行の2番目の番号、つまり45が列と3番目の番号(つまり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]])

しかし、私はこのエラーが発生します

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

誰かが私が間違っていることを理解するのを手伝ってくれますか?

4

2 に答える 2

6

多くのことを試した後、sparseMatrix関数のヘルプを読んで解決策が得られたので、まったく同じ問題が発生しました。パラメータindex1は、インデックスが1から始まるか0から始まるかを指定します。

N= sparseMatrix(i=x[[1]],j=x[[2]],x=x[[3]], index1=FALSE)
于 2013-01-09T14:58:16.497 に答える
4

を使用するx[[1]]場合、x 行列の最初の要素、この場合は を参照していますx[[1]]=12x[,1]インデックス列または行が必要な場合は、使用する必要がありx[1,]ます。これを試して:

x = matrix(c(12,45,56,
             34,65,31,
             12,23,43), nrow=3, byrow=TRUE)

N= sparseMatrix(i=x[,1], j=x[,2], x=x[,3])

編集済み:私はあなたのエラーを再現しました:

x = matrix(c( 0,45,56,
             34,65,31,
             12,23,43), nrow=3, byrow=TRUE)

N= sparseMatrix(i=x[,1], j=x[,2], x=x[,3])
Error en validObject(r) : 
  invalid class “dgTMatrix” object: all row indices (slot 'i') must be between 0 and nrow-1 in a TsparseMatrix

したがって、最初の 2 つの列に 0 がないことを確認してください

于 2012-04-19T15:26:25.637 に答える