Problème avec la fonction sub

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Problème avec la fonction sub

Messagepar Logez Maxime » 18 Oct 2006, 08:09

Bonjour,

afin d'homogénéiser des tableaux de données provenant de source différente je dois parfois utiliser cette fonction. Mais il m'est arrivé le problème suivant :

Code : Tout sélectionner

test <- c("N.sp.all.t","perc.sp.all","den.sp.all")

test
 "N.sp.all.t"  "perc.sp.all" "den.sp.all"

sub(".","_",test)
"_.sp.all.t"  "_erc.sp.all" "_en.sp.all"

Le point n'étant pas remplacé par le tiret, alors que quand je tape cette commande ça fonctionne :

Code : Tout sélectionner

sub("N.","N_",test)
"N_sp.all.t"  "perc.sp.all" "den.sp.all"

Je pense que le point doit renvoyer vers une indexation ou quelque chose dans le genre mais si quelqu'un a une réponse plus précise qu'il n'hésite pas !

Merci

Maxime

Pierre Bady
Messages : 405
Enregistré le : 02 Mai 2006, 07:46

Messagepar Pierre Bady » 18 Oct 2006, 08:53

bonjour,

je pense que ton problème vient du fait que la fonction 'sub' interprete une expression et que le point est un 'metacharacter' (en voici d'autres : \ | ( ) [ { ^ $ * + ?).

Code : Tout sélectionner

test <- c("N.sp.all.t","perc.sp.all","den.sp.all")
> sub(".","_",test,fixed=F)
[1] "_.sp.all.t"  "_erc.sp.all" "_en.sp.all"
> sub(".","_",test,fixed=T)
[1] "N_sp.all.t"  "perc_sp.all" "den_sp.all"
>

Avec la fonction 'gsub' l'exemple est plus percutant :D

Code : Tout sélectionner

> gsub(".","_",test,fixed=F)
[1] "__________"  "___________" "__________"
> gsub(".","_",test,fixed=T)
[1] "N_sp_all_t"  "perc_sp_all" "den_sp_all"
> gsub("\\.","_",test,fixed=F)
[1] "N_sp_all_t"  "perc_sp_all" "den_sp_all"
>


les détails sont dans :
http://stat.ethz.ch/R-manual/R-patched/ ... regex.html
et
http://www.opengroup.org/onlinepubs/009 ... hap09.html


en espérant t'avoir aider.

@+++

Pierre
=@===--------¬-------¬------¬-----¬
liens utiles :
http://www.gnurou.org/Writing/SmartQuestionsFr
http://neogrifter.free.fr/welcomeOnInternet.jpg
]<((((*< -------------------------------


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité