숫자가있는 벡터 번호가 있습니다.벡터의 근사값을 찾으십시오.
test <- 0.495
vector <- c(0.5715122, 2.2860487, 5.1436096, 9.1441949)
이 벡터는 대략 0.495의 숫자를 취할 필요가 있습니다. 도와주세요.
숫자가있는 벡터 번호가 있습니다.벡터의 근사값을 찾으십시오.
test <- 0.495
vector <- c(0.5715122, 2.2860487, 5.1436096, 9.1441949)
이 벡터는 대략 0.495의 숫자를 취할 필요가 있습니다. 도와주세요.
정확하게 이해했다면 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")
에 따라 선택.
'which.min' (이게 편리 할 것입니다.)이 이러한 유형의 작업에 적합한 함수인지 궁금해하기 시작했습니다. 두 값이 테스트 값에서 절대 거리가 먼 경우 (큰 __if__)는 어떻게됩니까? 왜'(== min (...))'이 아닌가? – bouncyball
@bouncyball 그렇다면 부동 소수점 정확도를 고려해야합니다. 당신은'vector [which (abs (vector - test) - min (abs (vector-test))]'와 같은 것을 할 수 있습니다. – Roland
답을 찾아 주셔서 감사합니다. – bouncyball
조금 더 명확하게 정의하십시오. 벡터 내에서 테스트 값과 가장 가까운 숫자를 찾아야합니까? – bouncyball
@SergeyOrlov 귀하의 아바타 사진을보기 싫어하거나 불쾌감을 느낍니다. – Roland