在向量中查找多个元素

假设我有以下vector:

> x <- sample(1:10,20,replace=TRUE) > x [1] 8 6 9 9 7 3 2 5 5 1 6 8 5 2 9 3 5 10 8 2 

我怎样才能find哪些元素是8或9?

这是做到这一点的一种方法。 首先我得到x是8或9的指数。然后我们可以validation在这些指数中,x的确是8和9。

 > inds <- which(x %in% c(8,9)) > inds [1] 1 3 4 12 15 19 > x[inds] [1] 8 9 9 8 9 8 

你可以尝试| 运营商在短期条件

 which(x == 8 | x == 9) 

grepl可能是一个有用的function。 请注意,在R 2.9.0及更高版本中grepl出现grepl 。 关于grepl一个grepl就是它返回一个与x相同长度的逻辑向量。

 grepl(8, x) [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [13] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE grepl(9, x) [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE [13] FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE 

为了达到你的答案,你可以做到以下几点

 grepl(8,x) | grepl(9,x) 

另外,如果你不需要使用索引,但只是你可以做的元素

 > x <- sample(1:10,20,replace=TRUE) > x [1] 6 4 7 2 9 3 3 5 4 7 2 1 4 9 1 6 10 4 3 10 > x[8<=x & x<=9] [1] 9 9