2016-08-31 7 views
-2

私は数のベクトルの番号を持っています。ベクトルのおおよその値を求める

test <- 0.495 

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

このベクターは、およそ数を0.495にする必要があります。 私を助けてください。

+2

少し明確にする必要があるものを定義してください。ベクトル内でテスト値に最も近い数値を見つける必要がありますか? – bouncyball

+3

@SergeyOrlov私はあなたのアバターの絵が気持ちが悪く、不快であると感じます。 – Roland

答えて

1

私が正しく理解していれば、testの値に最も近いベクトルから値を抽出する必要があります。 2つの異なる値が最も近いことができれば

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'(これほど都合がよい)がこれらのタイプのジョブのための適切な関数であるかどうか疑問に思ってきました。 2つの値がテスト値から絶対距離が離れている場合はどうなりますか?(big __if__)どうして '(==分(...))'? – bouncyball

+1

@bouncyball次に、浮動小数点精度を考慮する必要があります。あなたは 'ベクトル[which(abs(ベクトルテスト) - min(abs(ベクトルテスト)] Roland

+0

あなたの答えにそれを含め、説明してくれてありがとう。 – bouncyball

関連する問題