Eu sou muito novo no R e não consegui encontrar um exemplo simples online de como remover os últimos n caracteres de cada elemento de um vetor (matriz?)
Eu venho de um background de Java, então o que eu gostaria de fazer é iterar sobre cada elemento a$data
e remover os últimos 3 caracteres de cada elemento.
Como você faria isso?
-3
para-0
para obter o efeito desejado! Eu tenho muitos dados com datas, como:"2014-03-27 23:00:00 GMT" "2014-03-31 00:00:00 BST"
- sim, dois fusos horários juntos, e a função as.Date está retornando resultados inesperados (dia anterior para datas BST) - portanto, eu queria remover o carimbo de fuso horário, descobri que preciso faz-0
e desaparece, junto com horasstrptime
).Aqui está uma maneira de
gsub
:fonte
gsub('.{5}$', '', 'abcd')
.Embora seja basicamente o mesmo com a resposta de @nfmcclure, eu prefiro usar o
stringr
pacote, pois fornece um conjunto de funções cujos nomes são mais consistentes e descritivos do que aqueles na base R (na verdade, eu sempre busco "como obter o número de caracteres em R " porque não me lembro o nomenchar()
).Isso remove os últimos 3 caracteres de cada valor na
Species
coluna.fonte
stringr
pacote existe uma solução ainda mais simples:str_sub(iris$Species, end=-4)
O mesmo pode ser alcançado com o pacote stringi :
fonte
Semelhante a @Matthew_Plourde usando
gsub
No entanto, usando um padrão que cortará para zero caracteres, ou seja, retornará "" se a string original for menor que o número de caracteres a serem cortados:
A diferença é que o
{0,3}
quantificador indica 0 a 3 correspondências, ao passo que{3}
requer exatamente 3 correspondências, caso contrário, nenhuma correspondência será encontrada, caso em quegsub
retorna a string original não modificada.NB using
{,3}
seria equivalente a{0,3}
, simplesmente prefiro a última notação.Veja aqui mais informações sobre quantificadores regex: https://www.regular-expressions.info/refrepeat.html
fonte