Como remover caracteres especiais específicos em R
Tenho algumas frases como esta.
c = "In Acid-base reaction (page[4]), why does it create water and not H+?"
quero remover todos os caracteres especiais excepto '?&+-/
Eu sei que se eu quiser remover todos os caracteres especiais, eu posso simplesmente usar
gsub("[[:punct:]]", "", c)
"In Acidbase reaction page4 why does it create water and not H"
no entanto, alguns caracteres especiais como+ -? também são removidos, que pretendo manter.
Eu tentei criar uma sequência de caracteres especiais que eu posso usar em algum código como este
gsub("[special_string]", "", c)
O melhor que posso fazer é inventar isto.
cat("!\"#$%()*,.:;<=>@[\\]^_`{|}~.")
No entanto, o seguinte código não funciona.
gsub("[cat("!\"#$%()*,.:;<=>@[\\]^_`{|}~.")]", "", c)
O que devo fazer para remover personagens especiais, excepto alguns que quero guardar?
Obrigado.
12
3 answers
gsub("[^[:alnum:][:blank:]+?&/\\-]", "", c)
# [1] "In Acid-base reaction page4 why does it create water and not H+?"
19
Author: BrodieG, 2014-02-08 03:41:45
Acho que procuras uma solução regex. Eu vou dar - lhe uma solução confusa e um pacote adicionar na solução (desavergonhada auto-promoção).
Há provavelmente um melhor regex:
x <- "In Acid-base reaction (page[4]), why does it create water and not H+?"
keeps <- c("+", "-", "?")
## Regex solution
gsub(paste0(".*?($|'|", paste(paste0("\\",
keeps), collapse = "|"), "|[^[:punct:]]).*?"), "\\1", x)
#qdap: addon package solution
library(qdap)
strip(x, keeps, lower = FALSE)
## [1] "In Acid-base reaction page why does it create water and not H+?"
5
Author: Tyler Rinker, 2014-02-08 03:38:17
{[[2]} para que o seu método funcione, você precisa colocar o literal "]" imediatamente após o líder " ["
gsub("[][!#$%()*,.:;<=>@^_`|~.{}]", "", c)
[1] "In Acid-base reaction page4 why does it create water and not H+?"
Podes pôr o interior em qualquer lado. Se precisasse excluir o menos, teria de ser o último. Estás a ver?página regex depois de todas essas classes especiais de caracteres pré-definidos são listados.
4
Author: 42-, 2014-02-08 04:41:35