Подставлять и удалять символы в именах столбцов - PullRequest
1 голос
/ 10 февраля 2020

У меня есть следующие имена переменных:

vars <- c("var-1.caps(12, For]","var2(5,For]","var-3.tree.(15, For]","var-3.tree.(30, For]")

Мне нужно очистить эти имена, чтобы получить следующий результат:

clean_vars <- c("var1.caps_12_For","var2_5_For","var3.tree_15_For","var3.tree_30_For")

Итак, в основном я хотел бы drop -, ( и ].

Я использовал этот подход:

gsub("\\(.*\\]","",vars)

Но он отбрасывает все между ( и ]. Также не выпадает символ -.

1 Ответ

2 голосов
/ 10 февраля 2020

Мы можем захватить как группа. Сопоставьте шаблон для ., если он существует, за которым следует ( (метасимволы - поэтому экранируйте \\), за которым следуют одна или несколько цифр (\\d+), захваченных в качестве группы ((...)), после чего следует , и ноль или более пробелов (\\s*), затем захватить слово ([A-Za-z]+) в качестве второй группы захвата. В замене укажите обратную ссылку (\\1, \\2) группы захвата вместе с _, чтобы получить ожидаемый результат

out <-  sub("\\.?\\((\\d+),\\s*([A-Za-z]+)\\]$", "_\\1_\\2", vars)
out
#[1] "var-1.caps_12_For" "var2_5_For"        "var-3.tree_15_For" "var-3.tree_30_For"

sub('-', '', out)
#[1] "var1.caps_12_For" "var2_5_For"       "var3.tree_15_For" "var3.tree_30_For"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...