1. 程式人生 > >R語言-查詢滿足條件的數並獲取索引

R語言-查詢滿足條件的數並獲取索引

1、在R語言中,如何找到滿足條件的數呢?

例如給定一個向量c2,要求找到數值大於0的數:

> c2
 [1] 0.00 0.00 0.00 0.00 0.00 0.00 0.06 0.09 0.20 0.09 0.08 0.14 0.14 0.23
[15] 0.08 0.06 0.12 0.20 0.14 0.11 0.20 0.14 0.17 0.15 0.18 0.15 0.20 0.12
[29] 0.23 0.08 0.12 0.08 0.23 0.12 0.08 0.17 0.18 0.17 0.12 0.17 0.14 0.18
[43] 0.11 0.27 0.06
> c2[c2>0]
 [1] 0.06 0.09 0.20 0.09 0.08 0.14 0.14 0.23 0.08 0.06 0.12 0.20 0.14 0.11
[15] 0.20 0.14 0.17 0.15 0.18 0.15 0.20 0.12 0.23 0.08 0.12 0.08 0.23 0.12
[29] 0.08 0.17 0.18 0.17 0.12 0.17 0.14 0.18 0.11 0.27 0.06
>

2、找到了滿足條件的數,但如何獲取這些數在原向量中的位置(或索引呢)?

答案是使用which()函式。首先找到滿足大於0的數列:

> c2>0
 [1] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[13]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[25]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[37]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE

其次,根據該數列標識,就能找到對應的索引了。

> which(c2>0)
 [1]  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
[25] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

3、查詢判斷

(1)判斷至少一個數滿足條件

例如判斷向量中至少有一個小於或等於零的數

> any(c2<=0)
[1] TRUE

(2)判斷所有的數都滿足條件

例如判斷所有的數都大於0,判斷所有的數都大於等於0:

> all(c2>0)
[1] FALSE
> all(c2>=0)
[1] TRUE
>