Je suis très nouveau dans R et je n'ai pas trouvé d'exemple simple en ligne sur la façon de supprimer les n derniers caractères de chaque élément d'un vecteur (tableau?)
Je viens d'un arrière-plan Java, donc ce que je voudrais faire est d'itérer sur chaque élément a$data
et de supprimer les 3 derniers caractères de chaque élément.
Comment procéderiez-vous?
-3
pour-0
obtenir l'effet désiré! J'ai beaucoup de données avec des dates, comme:"2014-03-27 23:00:00 GMT" "2014-03-31 00:00:00 BST"
- oui, deux fuseaux horaires ensemble, et la fonction as.Date renvoie des résultats inattendus (jour plus tôt pour les dates BST) - donc je voulais supprimer le timbre de fuseau horaire, il s'avère que je dois faire-0
et il disparaît, avec les heuresstrptime
).Voici un moyen avec
gsub
:la source
gsub('.{5}$', '', 'abcd')
.Bien que ce soit essentiellement la même chose avec la réponse de @nfmcclure, je préfère utiliser
stringr
package car il fournit un ensemble de fonctions dont les noms sont plus cohérents et descriptifs que ceux de la base R (en fait, je cherche toujours sur Google "comment obtenir le nombre de caractères en R " car je ne me souviens plus du nomnchar()
).Cela supprime les 3 derniers caractères de chaque valeur dans la
Species
colonne.la source
stringr
package, il existe une solution encore plus simple:str_sub(iris$Species, end=-4)
La même chose peut être obtenue avec le package stringi :
la source
Similaire à @Matthew_Plourde utilisant
gsub
Cependant, en utilisant un modèle qui réduira à zéro caractère, c'est-à-dire retourner "" si la chaîne d'origine est plus courte que le nombre de caractères à couper:
La différence est que le
{0,3}
quantificateur indique 0 à 3 correspondances, alors que{3}
nécessite exactement 3 correspondances, sinon aucune correspondance n'est trouvée, auquel casgsub
renvoie la chaîne d'origine non modifiée.NB utiliser
{,3}
équivaudrait à{0,3}
, je préfère simplement la dernière notation.Voir ici pour plus d'informations sur les quantificateurs regex: https://www.regular-expressions.info/refrepeat.html
la source
sub()
place degsub()
.