5

Mathematica には、欠損値のある行列「a」と、「a」と同じ次元の行列「b」があります。ab を計算したいのですが、'NA' で示される値が欠落している場合は、'NA' のままにしたいと思います。これで私を助けてもらえますか?「a」の次元は 100 万 X 300 であることに注意してください。

ありがとう!

4

2 に答える 2

7

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 回限りの置換ルールを使用する方法をお勧めします。

于 2012-06-10T19:03:38.393 に答える
4

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.

于 2012-06-10T21:12:56.993 に答える