2017-06-13 25 views
0

ラベルと数値ベクトルを持つ1列の行列があります。
私は、より具体的には、そのベクトル内のエントリの1に等しい行列のラベルを抽出したい:マトリックス演算子の論理演算子 - R

> mat 
       [,1] 
intercept 20.86636535 
crim  -0.23802478 
zn   0.03822050 
indus  0.05135584 
chas  2.43504780 

> vec 
[1] -0.23802478 0.05135584 

> mat[2, 1] == vec[1] 
crim 
FALSE 

現在、私が最初のステップとこだわっています。同じ数値を保持しているのにFALSEが返される理由はわかりません。

+0

「%vec」などで試してみてください。参考[this](https://stackoverflow.com/questions/1169248/r-function-for-testing-if-a-vector-contains-a-given-element) –

+0

私は長さ5のベクトルを取得します。エントリはFALSEです。 – MaorSH

+1

次に、[浮動小数点](https://stackoverflow.com/questions/9508518/why-are-these-numbers-not-equal)の問題があります。 'print(mat、digits = 20)'と 'print(vec、digits = 20)'を比較すると、 –

答えて

0

round(as.numeric(mat[,2, drop=T]), 5) %in% round(vec, 5) は、浮動小数点の問題がある可能性があります。

そう収率は:

[1] FALSE TRUE FALSE TRUE FALSE

は基本的には、ベクトル(使用してドロップ= T)に第二のカラムをオンにしてから、数字の文字からそれを有効にする必要があります。丸め(この場合、小数点以下5桁まで)は、私が以前に言及した浮動小数点の問題を橋渡しします(David Arenburgと一緒に)。

私はあなたに役立つことを願っています。