Test sur une chaine de caractère R

Questions ne rentrant pas dans les rubriques ci-dessus.

Modérateur : Groupe des modérateurs

Sébastien Hamel
Messages : 71
Enregistré le : 11 Mai 2006, 08:00

Test sur une chaine de caractère R

Messagepar Sébastien Hamel » 19 Juil 2006, 13:32

Je souhaite faire un test sur un objet contenant une chaine de caractère: par exemple

essai <- ".ok"

en fait, je voudrais que si mon objet a une chaine de caractère du type ".quelquechose" c'est bon sinon c'est pas bon.
Donc je cherche à voir ou lire le premier caractère de ma chaine de caractère & si c'est un . c'est ok sinon bye bye....

Comment puis-je voir ou lire ma première chaine de caractère pour effectuer mon test?
Le test je pense le faire avec un if...

exemple:

if (essai!=".???") return(-1) ..... Un truc dans le genre

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

Messagepar Pierre Bady » 19 Juil 2006, 14:07

bonjour,


je cherche à voir ou lire le premier caractère de ma chaine de caractère & si c'est un .


tu peux utiliser la fonction "substring". voici, un petit exemple:

Code : Tout sélectionner

?substring
> essai <- "ted"
> if (substring(essai,1,1)!=".") print("ce n'est pas un point")
[1] "ce n'est pas un point"
> essai <- ".ted"
> if (substring(essai,1,1)==".") print("c'est un point")
[1] "c'est un point"


bon maintenant, on va compliquer un peu dans un second exemple:

Code : Tout sélectionner

> testpoint <- function(x){
+ if (substring(essai,1,1)==".")
+ return("c'est un point")
+ else return("ce n'est pas un point")
+ }
>
> essai <- "ted"
> testpoint(essai)
[1] "ce n'est pas un point"
> essai <- ".ted"
> testpoint(essai)
[1] "c'est un point"
>



en espérant t'avoir aidé un peu :)

@+++

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

Sébastien Hamel
Messages : 71
Enregistré le : 11 Mai 2006, 08:00

Messagepar Sébastien Hamel » 19 Juil 2006, 14:17

Pierre Bady a écrit :tu peux utiliser la fonction "substring"


Je n'avais pas du tout pensé à cette fonction..!

Merci

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 19 Juil 2006, 14:27

Les fonctions grep, regexpr, etc. offrent des possibilités très étendues:

Code : Tout sélectionner

> v <- c("ok", ".ok", "ok.")
> regexpr(pattern = ".", v, fixed = TRUE)
[1] -1  1  3
attr(,"match.length")
[1] -1  1  1
>
> cond <- regexpr(pattern = ".", v, fixed = TRUE) == 1
> v[cond]
[1] ".ok"


Renaud

Romain François
Messages : 42
Enregistré le : 08 Déc 2005, 19:23
Contact :

Vive grep

Messagepar Romain François » 31 Juil 2006, 11:00

Moi j'aime bien grep :

Code : Tout sélectionner

R> v <- c("ok", ".ok", "ok.")
R> grep("^\\.", v)
[1] 2
--
Romain François
Consultant R Indépendant
http://romainfrancois.blog.free.fr

Sébastien Hamel
Messages : 71
Enregistré le : 11 Mai 2006, 08:00

Re: Test sur une chaine de caractère R

Messagepar Sébastien Hamel » 04 Aoû 2006, 08:38

Je souhaiterais maintenant tester un mot de type: 2002
Donc un mot de type date, à savoir par exemple si le mot ne comporte pas 4 caractère c'est pas bon.
Mais je ne vois pas comment faire car si je retourne length(mot) = 1

QQ'un aurait-il une idée?

Vincent Andres
Messages : 13
Enregistré le : 17 Juil 2006, 09:27

Re: Test sur une chaine de caractère R

Messagepar Vincent Andres » 04 Aoû 2006, 08:44

Sébastien Hamel a écrit :Je souhaiterais maintenant tester un mot de type: 2002
Donc un mot de type date, à savoir par exemple si le mot ne comporte pas 4 caractère c'est pas bon.
Mais je ne vois pas comment faire car si je retourne length(mot) = 1
QQ'un aurait-il une idée?


?nchar

Une chtusse pour détecter certains formats de dates : if (tolower==toupper)

eça

Romain François
Messages : 42
Enregistré le : 08 Déc 2005, 19:23
Contact :

Re: Test sur une chaine de caractère R

Messagepar Romain François » 04 Aoû 2006, 15:15

Sébastien Hamel a écrit :Je souhaiterais maintenant tester un mot de type: 2002
Donc un mot de type date, à savoir par exemple si le mot ne comporte pas 4 caractère c'est pas bon.


?nchar

ou alors des incantations de ce style :

grep("^[[:digit:]]{4}$", mot) :

en gros on veut 4 chiffres, et rien avant, rien après
--

Romain François

Consultant R Indépendant

http://romainfrancois.blog.free.fr

Sébastien Hamel
Messages : 71
Enregistré le : 11 Mai 2006, 08:00

Re: Test sur une chaine de caractère R

Messagepar Sébastien Hamel » 07 Aoû 2006, 09:29

Romain François a écrit :

Code : Tout sélectionner

?nchar



Merci bcp, j'avoue que nchar est très pratique.
Cordialement,

Séb


Retourner vers « Archives : Autres »

Qui est en ligne

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