带有名称的向量和字符串变量的部分选择 (R)

Vector with names and selection partial selection of string variables (R)

我有几个统计测试的输出。这些输出采用带有名称的数字向量的形式。例如,我的一个输出的前 4 个值是:

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"

我想 select 匹配特定百分比的值,例如相当于 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" 

但是它 returns 整个向量

我对定义模式的理解是它会尝试匹配“”之间的表达式。当名称是一组字符串数字时,我还需要使用其他规则或字符吗?

您有两个问题:

1) 您想要索引 names(b) 而不是 b 本身。
2).grep()grepl()regexpr()等正则表达式中表示"any character",所以你必须用\

所以使用类似的东西:

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

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