2015-10-13 107 views
1

我有一個統計測試的幾個輸出。這些輸出採用帶名稱的數字向量的形式。例如,我的輸出中的一個的前4個值是:帶有名稱和選擇字符串變量部分選擇的向量(R)

a <- c(-2.676570e-08,-2.653513e-08,-2.612869e-08,-2.586143e-08); 
b <- setNames(a,c("0.6234414% ","1.6209476%","2.6184539%","3.6159601% ")) 
class(b) 
# "numeric" 

我會想選擇匹配特定%,該值,例如相當於2%類別的值。不過,我一直不成功

我試過功能grep

(grep("2.", b, value=TRUE)) 
#  0.6234414%  1.6209476%  2.6184539%  3.6159601% 
# "-2.67657e-08" "-2.653513e-08" "-2.612869e-08" "-2.586143e-08" 

但是它返回整個矢量

我定義模式的理解是,它會嘗試之間匹配的表達「」 。當名稱是一組字符串數字時,是否需要使用其他規則或字符?

+2

你到底想作爲你的榜樣的結果?不確定你想要'grep()',因爲它會把結果強加給字符 –

回答

3

你有兩個問題:

1)要建立索引names(b)b本身。
2).指在grep()使用正則表達式「任何字符」,grepl()regexpr()等,讓你有\\

逃避呢?所以使用這樣的:

b[grep("2\\.",names(b))] 
# 2.6184539% 
#-2.612869e-08 

b[grepl("2\\.",names(b))] 
# 2.6184539% 
#-2.612869e-08