web-dev-qa-db-fra.com

remplacer "." avec un espace en utilisant gsub () dans R?

J'ai des données comme ci-dessous, j'aime remplacer "." avec de l'espace en utilisant gsub () mais je n'ai pas pu obtenir une sortie correcte.

data<-c("12.57869486" ,"12.57869582" ,"12.57870155")

a<- gsub("."," ", data)
a
[1] "           " "           " "           "
8
star

De nombreuses façons d'y parvenir:

1) Utilisez le paramètre fixed de gsub:

De ?gsub:

fixe logique. Si VRAI, le modèle est une chaîne à mettre en correspondance telle quelle. Remplace tous les arguments contradictoires.

Il suffit donc d'ajouter fixed=TRUE À votre commande pour éviter d'interpréter le. comme n'importe quel caractère (mode regex):

> a<-gsub(".", " ", data, fixed=TRUE)
> a
[1] "12 57869486" "12 57869582" "12 57870155"

2) Utilisez chartr (d'après le commentaire de G. Grothendieck):

chartr(".", " ", data)

3) Échappez au caractère spécial . Qui signifie n'importe quel caractère dans l'expression régulière: (d'après le commentaire de Tim Biegeleisen)

  • gsub("\\.", " ", data) Échapper avec une double barre oblique inverse
  • gsub("[.]", " ", data) Échapper en utilisant la classe de caractères

Dans les expressions régulières longues, j'ai tendance à préférer la deuxième syntaxe car je la trouve plus lisible.

16
Tensibai