これはおそらく簡単に解決できます。私は、500行×335列のmat
の2次元行列と、120425行のdata.frame dat
を持っています。 data.frame dat
には、I
とJ
という2つの列があり、これらの列は、行をインデックス化するための列であり、列はmat
です。 mat
の値をdat
の行に追加したいと思います。行を使用した行列からの索引値、コロン記号
は、ここに私の概念は失敗です:
> dat$matval <- mat[dat$I, dat$J]
Error: cannot allocate vector of length 1617278737
(私はWin32でR 2.13.1を使用しています)。ちょっと深く掘り下げると、サブマトリクスがmat
になっているように見えますが、予想通りマトリックスの値が1次元ではないように見えます。
> str(mat[dat$I[1:100], dat$J[1:100]])
int [1:100, 1:100] 20 1 1 1 20 1 1 1 1 1 ...
私はint [1:100] 20 1 1 1 20 1 1 1 1 1 ...
のようなものを期待していました。値を取得するために行、列のインデックスを使用して2D行列をインデックスする正しい方法は何ですか? DWINが示唆するようにインデックス行列を用い
+1(これは別の質問をします:N次元の '[' '演算子Nベクトルを渡すときに何かに動作を変更するオプションがないのはなぜですか?マトリックス?) –
良い質問 - 私は*私が思う*を修正するためにそれを少し編集しました*はタイプミスです( 'datI'から' dat $ I')。これがあなたが元に戻すことを自由に感じていたのではない場合... – joran