データ セットを R のスパース マトリックスにロードする際に問題が発生しています。Matrix パッケージを使用しています。私が持っているデータは形式x y value
です。例えば:
V1 V2 V3
1 2 .34
7 4 .56
4 5 .62
同等のことをしたい場所
myMatrix[1,2] = .34
myMatrix[7,4] = .56
myMatrix[4,5] = .62
自動化された方法で。
私は次のようなことをしたい:
myMatrix = Matrix(nrow=numrows, ncol=numcols)
myMatrix[mydata[1:numrows, 1], mydata[1:numrows, 2]] <- mydata[1:numrows, 3]
しかし、数値行列が必要な場合、これにより行列が lgeMatrix になります。
私も試しました:
myMatrix = Matrix(nrow=numrows, ncol=numcols)
for(i in 1:numrows){
myMatrix[mydata[i, 1], mydata[i, 2]] <- mydata[i, 3]
}
これにより、必要な種類のマトリックスが作成されますが、時間がかかりすぎます (5 分以上)。停止するときに最初のいくつかの値をチェックし、それらは正しいが、最後の値は NA であるため、機能することはわかっています。入力する値が 247158 の 7095 x 5896 のマトリックスを使用しているので、焦っているだけでない限り、for ループは問題外です。
私の質問は次のとおりです。Rでこれを行うための好ましい方法は何ですか?
アップデート:
代わりに使用してそれを理解しましたsparseMatrix
:
myMatrix = sparseMatrix(i = mydata[1:numrows,1], j = mydata[1:numrows,2],
x = mydata[1:numrows,3])
他の投稿sparseMatrix
での使用法を理解していませんでした