带有名称的向量和字符串变量的部分选择 (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
我有几个统计测试的输出。这些输出采用带有名称的数字向量的形式。例如,我的一个输出的前 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