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 :

Appliquer à chaque ligne de fichier la fonction phyper


Sujet :

R

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut Appliquer à chaque ligne de fichier la fonction phyper
    Bonjour a tous,
    Je viens ici pour chercher de l'aide;
    J'ai un fichier avec 4 colonnes, et beaucoup de lignes,
    et j'aimerai appliquer a chaque ligne de mon fichier le test de fischer (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    phyper(q, m, n, k, lower.tail = TRUE, log.p = FALSE)
    sous R),
    sachant que
    colonne 1 de mon fichier correspond à q
    colonne 2 de mon fichier correspond à m
    colonne 3 de mon fichier correspond à n
    colonne 4 de mon fichier correspond à k
    je pensais utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d <- read.table('nom_de_mon_fichier.txt',sep='\t', head=T)
    mais comment appliquer a chaque ligne la fonction phyper ?
    tapply ?
    Merci d'avance pour votre aide !

  2. #2
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Bonjour,

    Si toutes tes colonnes sont bien en numérique, tu devrais pouvoir utiliser la fonction apply :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    res <- apply(d, 1,
                 function(x)
                 {
                    phyper(x[1], x[2], x[3], x[4], lower.tail = TRUE, log.p = FALSE)
                 })

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut
    Merci pour votre réponse
    j'ai rajouté deux colonnes au fichier dont je vous parlais plus haut, j'ai donc 6 colonnes et j'aimerai appliquer phyper à mes colonnes 3,4,5,6, j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    d <- read.table('listeR.txt',sep='\t', head=F)
    data <- d[,-c(1,2)]
    res<-apply(data, 1,
                 function(x)
                 {
                    phyper(x[1], x[2], x[3], x[4], lower.tail = FALSE, log.p = FALSE)
                 })
    write.table(res,'hypergeo.txt',sep='\t',quote=F, col.names=NA)
    mais j'aimerai que dans mon fichier de sortie, les deux premieres colonnes ( que j'ai enlevé avec d[,-c(1,2)] ) apparaissent : est ce possible ? pourriez vous m'aider ?
    Merci d'avance

  4. #4
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Pour ça il faut utiliser cbind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    d <- read.table('listeR.txt',sep='\t', head=FALSE)
     
    res <- cbind(d[ , 1:2],
                 res=apply(d[,-c(1,2)], 1,
                           function(x){
                               phyper(x[1], x[2], x[3], x[4], lower.tail = FALSE, log.p = FALSE)
                           }))
     
    write.table(res,'hypergeo.txt', sep='\t', quote=FALSE, col.names=NA)

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut
    Merci beaucoup !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. supprimer une ligne du fichier en fonction de son identifiant
    Par kabirou ousseini dans le forum C++
    Réponses: 0
    Dernier message: 28/04/2009, 21h21
  2. Réponses: 10
    Dernier message: 18/05/2006, 16h18
  3. [BATCH] lire chaque ligne d'un fichier texte
    Par bartmarley dans le forum Windows
    Réponses: 13
    Dernier message: 22/04/2005, 21h01
  4. Réponses: 4
    Dernier message: 19/06/2004, 22h28
  5. Awk - Traiter chaque ligne du fichier passwd
    Par tony montana dans le forum Linux
    Réponses: 7
    Dernier message: 25/03/2004, 09h40

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