2017-06-13 56 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一起)。

我希望能帮到你。