Удалите специальные символы с gsub (), которые находятся в определенной последовательности - PullRequest
0 голосов
/ 19 января 2019

Я пытался очистить столбец df с помощью R с помощью функции gsub с некоторым успехом.Я пытаюсь удалить > и /, когда они не находятся между строками, связывающими буквы.Я застрял на следующем этапе:

Ввод:

/ > abcdef/bbb
abcdef/ccc > / > abcdef/ccc > /
abcdef/bbb > abcdef/ccc > / > / > bbb/ccc

Желаемый вывод:

abcdef/bbb
abcdef/ccc > abcdef/ccc
abcdef/bbb > abcdef/ccc > bbb/ccc

Я использовал gsub("(/ >)", "", df[,1]) и gsub("( > /)", "", df[,1]), но неРабота.Пробел усложняет задачу, так как я хочу сохранить его, когда знак > предшествует или следует за строками букв / слов.

Кто-нибудь знает, как это обойти?Я на самом деле не кодер, поэтому любая помощь будет оценена :)

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Предупреждение: это удаляет пробел: Данные из ответа @Maurits Evers:

   library(stringr)
    ss1<-str_remove_all(ss,'[/ >](?<= )')
    str_remove_all(ss1,"(/>)|(>/)")



 #[1] "abcdef/bbb"                    "abcdef/ccc>abcdef/ccc"        
#[3] "abcdef/bbb>abcdef/ccc>bbb/ccc"

Это сохраняет его, но я нахожу его методом проб и ошибок:

str_remove_all(ss,"(/ >)|(> /)")

#[1] " abcdef/bbb"                         "abcdef/ccc  > abcdef/ccc "          
#[3] "abcdef/bbb > abcdef/ccc   > bbb/ccc"
0 голосов
/ 19 января 2019

Будет ли это работать?

gsub("(/ > | > /)", "", ss)
#[1] "abcdef/bbb"                        "abcdef/ccc > abcdef/ccc"
#[3] "abcdef/bbb > abcdef/ccc > bbb/ccc"

Пример данных

ss <- c("/ > abcdef/bbb", "abcdef/ccc > / > abcdef/ccc > /", "abcdef/bbb > abcdef/ccc > / > / > bbb/ccc")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...