Soy muy nuevo en R y no pude encontrar un ejemplo simple en línea de cómo eliminar los últimos n caracteres de cada elemento de un vector (¿matriz?)
Vengo de un entorno de Java, así que lo que me gustaría hacer es iterar sobre cada elemento a$data
y eliminar los últimos 3 caracteres de cada elemento.
¿Cómo lo harías?
-3
a-0
conseguir el efecto deseado! Tengo una gran cantidad de datos con fechas, como:"2014-03-27 23:00:00 GMT" "2014-03-31 00:00:00 BST"
- sí, dos zonas horarias juntas, y la función as.Date está devolviendo resultados inesperados (el día anterior para las fechas BST); por lo tanto, quería eliminar la marca de la zona horaria, resulta que tengo que hacer-0
y desaparece, junto con las horasstrptime
).He aquí una forma con
gsub
:fuente
gsub('.{5}$', '', 'abcd')
.Aunque esto es casi lo mismo con la respuesta de @nfmcclure, prefiero usar el
stringr
paquete ya que proporciona un conjunto de funciones cuyos nombres son más consistentes y descriptivos que los de la base R (de hecho, siempre busco en Google "cómo obtener el número de caracteres en R " ya que no recuerdo el nombrenchar()
).Esto elimina los últimos 3 caracteres de cada valor en la
Species
columna.fuente
stringr
paquete hay una solución aún más simple:str_sub(iris$Species, end=-4)
Lo mismo se puede lograr con el paquete stringi :
fuente
Similar a @Matthew_Plourde usando
gsub
Sin embargo, usando un patrón que recortará a cero caracteres, es decir, devolverá "" si la cadena original es más corta que la cantidad de caracteres a cortar:
La diferencia es que el
{0,3}
cuantificador indica de 0 a 3 coincidencias, mientras que{3}
requiere exactamente 3 coincidencias; de lo contrario, no se encuentra ninguna coincidencia, en cuyo casogsub
devuelve la cadena original sin modificar.NB usar
{,3}
sería equivalente a{0,3}
, simplemente prefiero la última notación.Consulte aquí para obtener más información sobre los cuantificadores de expresiones regulares: https://www.regular-expressions.info/refrepeat.html
fuente
sub()
lugar degsub()
.