2009-07-23 74 views

回答

28

這是一種方法。首先我會在其中x是8或9。然後,我們可以驗證這些索引的索引,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 
+0

但是假設我在尋找兩個值沒有他們的順序排序的具體指標。如果我正在查找字母表中的Z和A的索引,我將如何得到「26,1」而不是「1,26」的結果? _which(字母%%c('z','a'))_ – dasf 2017-09-17 17:40:45

0

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

> 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 
6

你可以嘗試|運營商短條件

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

grepl也許有用的功能。請注意,grepl出現在R 2.9.0及更高版本的版本中。有關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) 
+0

我也喜歡grepl,非常適合過濾文本字符串上的數據框等。感謝OR示例 - 我認爲這會很簡單,但我一直試着`||`這是錯誤的語法。 – atomicules 2010-11-29 17:37:52