Регулярное выражение и сопоставление с образцом, чтобы найти элементы списка, а не строки - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь выполнить простую задачу по извлечению определенных элементов из списка, но проблема в том, что некоторые имена элементов имеют одинаковые буквы, но разные цифры.Вместо того, чтобы вводить все возможные комбинации, я хочу использовать подстановочный знак для представления любого числа.

Итак, вот часть списка, из которого я хочу получить элементы:

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 или $P[0-9]N в VECTOR, но это не сработает, если я просто наберу его таким образом.

Если я наберу frame@description[requiredKeys], я получу все необходимые элементы, кроме тех, которые имеют подстановочный знак.

Мне интересно, есть ли простой способ сделать это так, как я его настроил, или мне придется использовать grep, grepl или что-то подобное.

Любая помощь очень ценится.Спасибо.

...