2015-10-13 94 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