2016-08-31 1 views
-2

숫자가있는 벡터 번호가 있습니다.벡터의 근사값을 찾으십시오.

test <- 0.495 

vector <- c(0.5715122, 2.2860487, 5.1436096, 9.1441949) 

이 벡터는 대략 0.495의 숫자를 취할 필요가 있습니다. 도와주세요.

+2

조금 더 명확하게 정의하십시오. 벡터 내에서 테스트 값과 가장 가까운 숫자를 찾아야합니까? – bouncyball

+3

@SergeyOrlov 귀하의 아바타 사진을보기 싫어하거나 불쾌감을 느낍니다. – Roland

답변

1

정확하게 이해했다면 test 값에 가장 가까운 벡터에서 값을 추출하고 싶습니다. 두 개의 서로 다른 값에 가장 가까운 수 있다면

vector[which.min(abs(vector - test))] 
#[1] 0.5715122 

, 당신이 할 수 있습니다 :

vector <- c(0.5715122, 2.2860487, 5.1436096, 9.1441949, 0.4184878) 
tol <- sqrt(.Machine$double.eps) 
vector[which(abs(vector - test) - min(abs(vector - test)) < tol)] 
#[1] 0.5715122 0.4184878 

tol는 부동 소수점 정밀도를 차지 허용 오차이며 일반적으로 help(".Machine")에 따라 선택.

+0

'which.min' (이게 편리 할 것입니다.)이 이러한 유형의 작업에 적합한 함수인지 궁금해하기 시작했습니다. 두 값이 테스트 값에서 절대 거리가 먼 경우 (큰 __if__)는 어떻게됩니까? 왜'(== min (...))'이 아닌가? – bouncyball

+1

@bouncyball 그렇다면 부동 소수점 정확도를 고려해야합니다. 당신은'vector [which (abs (vector - test) - min (abs (vector-test))]'와 같은 것을 할 수 있습니다. – Roland

+0

답을 찾아 주셔서 감사합니다. – bouncyball

관련 문제