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$datay eliminar los últimos 3 caracteres de cada elemento.
¿Cómo lo harías?

-3a-0conseguir 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-0y 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
stringrpaquete 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
Speciescolumna.fuente
stringrpaquete 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
gsubSin 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 casogsubdevuelve 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().