2017-01-23 75 views
0

我有以下a找不到數值指標

> a 
[1] 0.32142857 0.21428571 0.10714286 0.46428571 0.42857143 0.57142857 0.35714286 0.50000000 0.67857143 0.07142857 0.92857143 0.60714286 
[13] 0.17857143 0.25000000 1.00000000 0.71428571 0.64285714 0.78571429 0.57142857 0.28571429 0.57142857 0.39285714 0.96428571 0.85714286 
[25] 0.75000000 0.53571429 0.82142857 0.14285714 0.39285714 0.21428571 0.03571429 0.89285714 
> str (a) 
num [1:32] 0.321 0.214 0.107 0.464 0.429 ... 
> class (a) 
[1] "numeric" 

我想找到特定元素的索引值。 當我使用它的整數它的工作原理,但不是爲別人:

> which (a==1) 
[1] 15 
> which (a==0.10714286) 
integer(0) 
> match (0.10714286,a) 
[1] NA 

如何,我可以得到的索引值30.10714286

+2

請看這裏:http://stackoverflow.com/questions/9508518/why-are-these-numbers-not-equal – nicola

回答

3

你將不得不尋找替代最接近的值:

val <- 0.10714286 
idx <- which.min(abs(a - val)) 
+0

謝謝,你能解釋什麼是a-val嗎? – Avi

+2

a(你的向量)減去你想要搜索的值 – mpjdem

+0

通常你會做'which(abs(a-val) Roland

0

只需使用向量來存儲數據。請通過以下代碼:

> a=c(0.32142857,0.21428571,0.10714286,0.46428571,0.42857143) 
    > str(a) 
    num [1:5] 0.321 0.214 0.107 0.464 0.429 
    > a[1] 
    [1] 0.3214286 
    > a[2] 
    [1] 0.2142857 
    > a[3] 
    [1] 0.1071429 
    > a[4] 
    [1] 0.4642857 
    > which(a==0.10714286) 
    [1] 3 
    > class(a) 
    [1] "numeric" 
    > match(0.10714286,a) 
    [1] 3 

希望它適合你。

+0

希望這個解決方案看起來簡單易懂。 –