2015-06-23 33 views
4

我想在R中使用match()在特定時間間隔內查找任何匹配值。例如:can match()的範圍包含在R中?

v <- c(2.2, 2.4, 4.3, 1.3, 4.5, 6.8, 0.9) 
match(2.4, v) 

給了我一切,其中2.4發生在v的位置,但如果我想給一個範圍內所有可能的匹配是什麼?例如2.4 +/- 0.2?

任何幫助非常感謝,提前致謝!

+3

'which(abs(v - 2.4)<0.2)'? –

+1

請注意'match'只返回匹配的第一個參數。也許'哪個'可以對你更好,即使這裏提供的代碼都有相同的結果(語法略有不同)。 – SabDeM

+0

也許'data.table :: between(v,2.2,2.6,incbounds = FALSE)' –

回答

5

在這種情況下,我會使用子集:

v[v>2.2 & v<2.6] 

which(v>2.2 & v<2.6) 

取決於如果你想要的值或者索引

2

本上是另一種選擇:

which(findInterval(v, c(-.2, .2) + 2.4) == 1) 
[1] 1 2 

findInterval(v, c(-.2, .2) + 2.4)給你1 1 2 0 2 2 0,其中1表示元素在區間內,0表示它在左邊,2表示在右邊。