IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Expression régulière gregexpr


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut Expression régulière gregexpr
    il m'est demandé de compter un nombre d'occurence de chaque mot de mon vecteur contenant toutes les combinaisons possibles de mots avec les lettres A T C G (nucleotides).
    j'ai regardé dans la commande d'aide pour la fonction gregexpr mais je ne trouve pas de solution..............

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Il s'agit de mots de 4 lettres?
    Les lettres A T C G peuvent être répétées : par exemple "AATC" est-il un mot correct?

    Je ne sais pas trop à quoi ressemble ton vecteur, mais s'il est composé d'une chaîne de caractères pour chacun des mots alors tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    v<-c("ATCG","AGCT","ATCG","ATCG","GCTA","GCAT","ATGC")
     
    table(v)
     
    AGCT ATCG ATGC GCAT GCTA 
       1    3    1    1    1
    Mais peut-être s'agit-il simplement d'un grand vecteur composé de plein de lettres parmis A T C G ?

    En tout cas, il faudrait nous en dire plus pour qu'on puisse essayer de t'aider (un petit exemple n'est jamais de trop )

    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut
    voici mon vecteur
    > nucleotide
    [1] "A" "T" "C" "G"

    ensuite jai imbriquer des boucles for pour obtenir toutes les combinaions de mot de quatres lettres :


    combinaisons=NULL
    for( i in nucleotide){
    for( j in nucleotide){
    for( k in nucleotide){
    for( l in nucleotide){
    combinaisons=c(combinaisons,paste(i,j,k,l,sep=""))
    }
    }
    }
    }

    ceci me permet d'obtenir 256 mots comme AATT OU AAAA
    Tous les differents mots snt regroupés dans le vecteur combinaisosns.

    Ensuite on me demande de "Compter le nombre d'occurrences de chaque mot, le stocker dans un vecteur. (indiçage avec étiquette recommandé, l'indice est le mot ex: vect['AAGA'])."
    ceci grâce à la commande gregexpr mais j'ai beau regarder dans la commande d'aide de la
    commande je n'arrive pas à savoir quoi mettre comme argument

  4. #4
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    J'avoue ne pas bien saisir, qu'appelles-tu un "mot"?
    Est-ce que un mot = une combinaison de 4 lettres parmis A T C et G?
    Est-ce que tu tiens comptes de l'ordre des lettres A T C G dans les mots? Car si tu en tiens compte alors ton vecteur "combinaisons" contient 256 mots (de 4 lettres) tous différents et je ne vois pas où est le problème...

    Désolée mais c'est assez confus tout ça...

    EDIT : et si tu fais un "table" sur ton vecteur "combinaisons", ça ne te donne pas ce que tu recherches ??

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut
    il s'agit bien de mots contenant les 4 lettres A T C et G , ON A AINSI 256 mots possibles et on me demande de trouver le nombre d'occurrence de chaque mots grâce à la commande gregexpr.
    Si je prend l'exemple du mot AAAT, il peut se trouver deux fois das les 56 mots soit sous la forme AAAT u sous la forme TAAA .
    On me demande alors d'effectuer cette exemple pour mes 256 mots :p

  6. #6
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bon désolée, mais tout n'est pas encore clair pour moi...

    J'ai bien compris que AAAT et TAAA sont considérés comme le même mot, mais qu'en est-il par exemple de AAAT et ATAA ou AATA?

    Sinon, je ne sais pas vraiment comment calculer les nombres d'occurence sous R (avec certains langages de programmation ça serait sûrement plus facile).

    Bonne continuation


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  7. #7
    Membre chevronné
    Homme Profil pro
    MCU
    Inscrit en
    Juillet 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : MCU
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 185
    Par défaut
    Bonjour,

    Chaque mot peut être mis en argument dans la fonction via une boucle...

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    nucleotide<-c("A","T","C","G")
    dictionnaire<-do.call("paste",c(expand.grid(nucleotide,nucleotide,nucleotide,nucleotide),sep=""))
     
    test<-paste(sample(c("A","C","T","G"),10000,replace=TRUE),sep="",collapse="")
     
    comptageMots<-function(x){
    positions<-unlist(gregexpr(x,test,perl=TRUE));
    nmots<-length(positions[which(positions>0)]);
    return(nmots)}
     
    resultat<-sapply(dictionnaire,comptageMots)
    resultat["TAGG"]
    Après il peut y avoir un soucis dans la façon de compter certains mots. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gregexpr("AAAA","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
    On peut considérer que le mot "AAAA" est retrouvé en position 1,2,3,etc. Dans ce cas, une bidouille du style (à tester) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    comptageMots <- function(motif,texte){
      positions <- regexpr(motif,texte,perl=TRUE)
      positionUni <- positions
      while(positionUni!=-1 & !identical(texte,"")){
        texte <- substr(texte,positionUni+1,nchar(texte))
        positionUni <- regexpr(motif,texte,perl=TRUE)
        if (positionUni!=-1)
            positions <- c(positions,positionUni+positions[length(positions)])
      }
      nmots <- length(positions[which(positions>0)])
      return(nmots)
    }
    peut faire l'affaire...

    HTH

    Vincent

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Par défaut
    Je suggère un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    # génération des mots de 4 nucléotides
    nuc <- c("A","C","G","T");
    nuc2 <- as.vector(outer(nuc,nuc,paste,sep=""))
    comb <- as.vector(outer(nuc2,nuc2,paste,sep=""))
     
    # génération d'un mot de 5000 nucléotides
    L <- paste(sample(nuc,1000,replace=TRUE),collapse="")
     
    # Hop.
    sapply(comb, function(x) length(gregexpr(x,L)[[1]]))

Discussions similaires

  1. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo