Как удалить подстроку из имен переменных? - PullRequest
0 голосов
/ 29 января 2020

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

vars <- c("var1.caps(12, For]","var2(5,For]","var3.tree.(15, For]","var4.caps")

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

clean_vars <- c("var1.caps","var2","var3.tree.","var4.caps")

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

Есть ли какой-нибудь автоматизированный способ сделать это в R?

Я пытался адаптировать str_replace(vars, pattern, ""), но не уверен, как сделать pattern гибким, потому что он может иметь различные значения между ( и ].

Ответы [ 4 ]

1 голос
/ 29 января 2020

Использование stringr и purrr:

stringr::str_split(vars, "\\(") %>% purrr::map(., 1) %>% unlist()
[1] "var1.caps"  "var2"       "var3.tree." "var4.caps" 
1 голос
/ 29 января 2020
gsub("\\(.*\\]","",vars)
[1] "var1.caps"  "var2"       "var3.tree." "var4.caps"
0 голосов
/ 29 января 2020

Исключить

  • первый ( (в регулярном выражении \\() в строке
  • и все, что следует после него (.+).

Заменить его ничем ("").

sub("\\(.+", "", vars)

# [1] "var1.caps"  "var2"       "var3.tree." "var4.caps" 
0 голосов
/ 29 января 2020

Другой вариант использования gsub

> gsub("(?<=)\\(.*\\]","\\1",vars,perl = T)
[1] "var1.caps"  "var2"       "var3.tree."
[4] "var4.caps
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...