Mathematica には、欠損値のある行列「a」と、「a」と同じ次元の行列「b」があります。ab を計算したいのですが、'NA' で示される値が欠落している場合は、'NA' のままにしたいと思います。これで私を助けてもらえますか?「a」の次元は 100 万 X 300 であることに注意してください。
ありがとう!
Mathematica には、欠損値のある行列「a」と、「a」と同じ次元の行列「b」があります。ab を計算したいのですが、'NA' で示される値が欠落している場合は、'NA' のままにしたいと思います。これで私を助けてもらえますか?「a」の次元は 100 万 X 300 であることに注意してください。
ありがとう!
1 つのアプローチは、結果に対して次のような置換規則を使用することです。
In[1] {1, na, 3, na, 5} - {1, 2, 3, 4, 5}
Out[1] {0, -2 + na, 0, -4 + na, 0}
In[2] {1, na, 3, na, 5} - {1, 2, 3, 4, 5}/. x_ + na -> na
Out[2] {0, na, 0, na, 0}
別のアプローチは、 for を含む加算 (および減算) が常に ; になるように定義するUpValue
ことna
ですna
。このような:
In[3] na /: Plus[___, na, ___] := na
UpValues
操作を複数回行う場合は、1 回限りの置換ルールを使用する方法をお勧めします。
Indeterminate
これには、探している動作が既にあるため、これを使用できます。
In[2]:= {1, na, 3, na, 5} - {1, 2, 3, 4, 5} /. na -> Indeterminate /. Indeterminate -> na
Out[2]= {0, na, 0, na, 0}
個人的には、 .Indeterminate
の代わりにNA
.