2017-06-13 55 views
0

我有一個帶有標籤和數值向量的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'中的'mat%等。另請參見[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),然後從一個字符到一個數字轉動。四捨五入(在這種情況下,小數點後五位)然後彌補了我之前提到的浮點問題(與David Arenburg一起)。

我希望能幫到你。