无法找到数值索引

时间:2017-01-23 11:03:36

标签: r vector indexing numeric

我有以下a

> 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

如何获取3的索引值0.10714286

2 个答案:

答案 0 :(得分:3)

您必须搜索最近的值:

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

答案 1 :(得分: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

希望它适合你。