これはおそらく前に投稿された他のものと同様の質問ですが、完全に一致するものは見つかりませんでした。同じベクトルの値に基づいてベクトル値を変更してください
とにかく、私は19列から5,000行の行列を持っています。したがって、ベクターは再びオーバー開始前に0.1に1から行く
0 0.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
...
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
:各行は0.1(したがって、0.0、0.1,0.2 ... 1.0)従ってなどの単位で0.0と1の間に1つの値を含みます1に移り、次の列に移動します。私は基本的に行から行に移動し、数値があるかどうかを調べ、ベクトルの次の場所にその値から1を引いた関数を欲しいと思います。効果的にこのように:
0 0.6 0.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.5 0.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.4 0.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
...
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.9 0.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.8 0.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
私は、「適用」または単に再コーディングが、トリックはそれがすべて〜5000行を実行するようになっているベースでいくつかのことを試してみました。多分私は列を通過することによってそれにアプローチする必要がありますか?
'ifelse'で列を操作し、前の列の値を確認し、条件が一致したときに現在の列を変更できます。 'ifelse'はベクトル化されているので、すべての列演算は高速です。 forループは、右端の列から左に開始する必要があります。 – dracodoc
別の方法は、変更するセルのインデックスをすべて計算し、それらをベクトルに入れ、同じ順序で更新するすべての値を計算し、別のベクトルに入れてインデックスで更新します。 – dracodoc