2017-01-23 10 views
0

를 찾을 수 없습니다내가 <code>a</code> 다음 한 수치 지수

> 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 

어떻게 인덱스 값 0.10714286에 대한 3받을 수 있나요?

+2

여기를 참조하십시오 : http://stackoverflow.com/questions/9508518/why-are-these-numbers-not-equal – nicola

답변

3

대신 가장 가까운 값을 검색해야합니다 :

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

감사합니다. – Avi

+2

(귀하의 벡터)에서 검색하고자하는 값을 뺀 값 – 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

이 솔루션이 이해하기 쉽고 간단 해 보이기를 바랍니다. –