Gostaria de remover caracteres específicos de seqüências de caracteres dentro de um vetor, semelhante ao recurso Localizar e substituir no Excel.
Aqui estão os dados com os quais começo:
group <- data.frame(c("12357e", "12575e", "197e18", "e18947")
Eu começo com apenas a primeira coluna; Eu quero produzir a segunda coluna removendo o e
's:
group group.no.e
12357e 12357
12575e 12575
197e18 19718
e18947 18947
fixed = TRUE
tornaria isso mais rápido.fixed=TRUE
impede que R use expressões regulares, que permitem uma correspondência de padrões mais flexível, mas levam tempo para calcular. Se tudo o que for necessário for remover uma única cadeia constante "e", elas não serão necessárias.sub("e", "", group)
o mesmo resultado?e
que encontra em cada elementoExpressões regulares são seus amigos:
Agora use
gsub()
com o padrão de substituição possível mais simples: string vazia:fonte
require(stringr);group$groupNoE <- str_replace(group$group, "e", "")
str_replace
wrapssub
, portanto substituirá apenas a primeira ocorrência do padrão. Você precisaria usarstr_replace_all
se quisesse o mesmo comportamento quegsub
.Resumindo 2 maneiras de substituir seqüências de caracteres:
1) Use
gsub
2) Use o
stringr
pacoteAmbos produzirão o resultado desejado:
fonte
Você não precisa criar um quadro de dados a partir do vetor de cadeias, se desejar substituir alguns caracteres. Expressões regulares é uma boa opção, pois já foi mencionado por @Andrie e @Dirk Eddelbuettel.
Preste atenção, se você deseja substituir caracteres especiais, como pontos, deve empregar sintaxe de expressão regular completa, como mostrado no exemplo abaixo:
isso produzirá
fonte
gsub("\\.", " ", ctr_names)
Use o pacote stringi :
fonte
fonte