正则表达式和模式匹配以查找列表中的元素,而不是字符串

时间:2018-10-19 17:55:57

标签: r list pattern-matching

我正在尝试做一个简单的任务,从列表中提取某些元素,但是问题是某些元素名称具有相同的字母,但数字不同。除了要输入所有可能的组合之外,我还想要一种使用通配符来表示任何数字的方法。

所以这是我要从中获取元素的列表的一部分:

frame@description= $`$TOT`
[1] "100000"

$`$BEGINSTEXT`
[1] "0"

$`$ENDSTEXT`
[1] "0"

$`$NEXTDATA`
[1] "0"

$`$BEGINANALYSIS`
[1] "0"

$`$ENDANALYSIS`
[1] "0"

$`$BEGINDATA`
[1] "3851"

$`$ENDDATA`
[1] "24003850"

$`$P1N`
[1] "Time"

$`$P1B`
[1] "32"

$`$P1E`
[1] "0,0"

$`$P1R`
[1] "524288"

$`$P2N`
[1] "Event-length"

$`$P2B`
[1] "32"

$`$P2E`
[1] "0,0"

$`$P2R`
[1] "4096"

$`$P3N`
[1] "Y89Di"

$`$P3S`
[1] "89Y"

$`$P3B`
[1] "32"

这是我要提取的元素的向量:

requiredKeys = c("$BEGINANALYSIS","$BEGINDATA","$BEGINSTEXT","$BYTEORD","$DATATYPE","$ENDANALYSIS","$ENDDATA","$ENDSTEXT","$MODE","$NEXTDATA","$PAR","$P*B","$P*E","$P*N","$P*R","$TOT")

如您所见,列表中有$P1N$P2N$P3N等,我想用$P1*N或{{1 }}在VECTOR中,但是如果我只是这样输入的话,它是行不通的。

如果我输入$P[0-9]N,我将得到所有想要的元素,但具有通配符的元素除外。

我想知道是否有一种简单的方法可以完成设置,或者是否必须使用grep,grepl或类似的方法。

非常感谢您的帮助。谢谢。

0 个答案:

没有答案