As fórmulas químicas (strings) são sempre escritas em um formato específico, um elemento químico seguido por um número, por exemplo, Oxigênio O2, dióxido de carbono CO2. cloreto sólido NaCl
Se um elemento pode ser apresentado com uma letra, esta letra está em maiúsculas, por exemplo, oxigênio O
e carbono C
. Alguns elementos são mostrados com 2 letras, e apenas a primeira letra está em maiúscula, por exemplo, sódio Na
.
Portanto, o elemento é representado por uma ou duas letras, existem apenas dois casos.
Você pode ver que se o número do elemento for 1, o número 1 não será escrito depois dele.
O que eu quero fazer é adicionar 1 atrás desses elementos.
Meus dados de exemplo são
strings <- c("O2", "CO2", "NaCl")
O que eu quero é:
strings_new <- c("O2", "C1O2", "Na1Cl1")
Na linguagem de programação, existem strings com um formato específico. Uma letra maiúscula ou uma letra maiúscula e uma letra minúscula seguem um número. Se um número atrás de uma letra estiver faltando e esta letra estiver em maiúscula, e a letra atrás dela também estiver em maiúscula, então 1 será inserido após esta letra. Se esta letra estiver em maiúscula, mas a letra atrás dela estiver em minúsculas, 1 será inserido após a letra minúscula.
Muito obrigado por sua ajuda.
Você pode usar esta regex que corresponde a uma letra maiúscula (para C
) ou maiúscula opcionalmente seguida por uma minúscula (para apoiar Na
ou Cl
) e não seguida por um dígito, o que significa que precisa ser anexada por1
([A-Z][a-z]?)(?!\d)
E substitua por \11
Confira esta demonstração de código R,
strings <- c("O2", "CO2", "NaCl")
gsub("([A-Z][a-z]?)(?!\\d)","\\11", strings, perl = TRUE)
Impressões,
[1] "O2" "C1O2" "Na1Cl1"
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras