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 :

Subset d'une matrice


Sujet :

R

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 48
    Par défaut Subset d'une matrice
    Bonjour,

    je suis débutant en R,

    Voila mon problème je souhaiterais récupérer un subset d'une matrice à partir d'un fichier qui se présente ainsi:

    nt -500 -400 -300 ... 200 300
    A x x x...
    AC
    AG
    AT
    C
    ...

    voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tRNA_abu_top<-read.delim(file=mon_fichier, sep='\t', header=TRUE)
    row.names(tRNA_abu_top) <- tRNA_abu_top$nt
    tRNA_abu_top<-tRNA_abu_top[,2:10]
    tRNA_abu_top.matrix<-data.matrix(tRNA_abu_top)
    je souhaiterais récupérer un subset de ma matrice ou la 1ere colonne qui correspond aux "names" ait une longueur de 2 (soit nchar(tRNA_abu_top$nt) ==2) mais je n'arrives pas à trouver la syntaxe correcte...

    Je n'ai pas réussi à trouver de solution à mon problème sur internet...

    Merci à vous pour votre aide !!

    Bonne journée

  2. #2
    Membre éclairé
    Homme Profil pro
    Data Scientist
    Inscrit en
    Février 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Scientist

    Informations forums :
    Inscription : Février 2017
    Messages : 28
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tRNA_abu_top[nchar(tRNA_abu_top$nt) ==2,]
    Est-ce ça que tu souhaites faire ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 48
    Par défaut
    oui c'est exactement ce que je souhaite faire mais cela ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    library(gplots)
    tRNA_abu_top<-read.delim(file='./mouse/mmu-miR-153-3p_selected_bedfiles/mmu-miR-153-3p_utr3_nt.tab', sep='\t', header=TRUE)
     
    tRNA_abu_top<-tRNA_abu_top[,2:11]
    row.names(tRNA_abu_top) <- tRNA_abu_top$nt
    tRNA_abu_top.matrix<-data.matrix(tRNA_abu_top)
    sous_matrice<-tRNA_abu_top[nchar(tRNA_abu_top$nt) ==2,]
    print(sous_matrice)
    la console me renvoie le message suivant

    [1] X.500 X.400 X.300 X.200 X.100 X100 X200 X300 X400 X500
    <0 rows> (or 0-length row.names)

  4. #4
    Membre éclairé
    Homme Profil pro
    Data Scientist
    Inscrit en
    Février 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Scientist

    Informations forums :
    Inscription : Février 2017
    Messages : 28
    Par défaut
    Essaye de lancer cette commande après avoir importé ta table. La fonction nchar() ne marche que sur les chaines de caractères. Ta variable nt est sûrement en factor

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tRNA_abu_top$nt<-as.character(tRNA_abu_top$nt)

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 48
    Par défaut
    ok super merci pour l'aide !!

    j'ai réussi comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    library(gplots)
    tRNA_abu_top<-read.delim(file='./mouse/mmu-miR-153-3p_selected_bedfiles/mmu-miR-153-3p_utr3_nt.tab', sep='\t', header=TRUE)
     
    row.names(tRNA_abu_top) <- tRNA_abu_top$nt
    tRNA_abu_top$nt<-as.character(tRNA_abu_top$nt)
    sous_matrice<-tRNA_abu_top[nchar(tRNA_abu_top$nt) ==2,]
    sous_matrice
     
    sous_matrice<-sous_matrice[,2:11]
     
    tRNA_abu_top.matrix<-data.matrix(sous_matrice)
     
    tRNA_abu_top.matrix
    j'obtiens la matrice telle que je veux.

    Maintenant désolé je voudrais quelque chose qui diffère de ma question de départ:

    je souhaiterais créer une 2ème matrice qui va contenir toujours contenir les 10 colonnes de ma matrice de départ mais dont je vais sélection seulement 4 ligne puis je veux additionner toutes les lignes de chaque colonne de façon à obtenir un vecteur de 10 valeurs,

    le problème étant que je ne sais pas comment obtenir la somme des lignes de ma matrice

    ex:

    nt -500 -400 -300 ... 200 300
    A x x x...
    AC
    AG
    AT
    C

    => nt -500 -400 -300 ... 200 300
    total x x x x x x

    et enfin dernière étape je voudrais appliquer ce vecteur à la 1ere sous matrice que j'ai crée mais pas par multiplication mais par division (sois le produit matrice 1/vecteur... )

    J'espère m'être suffisemment bien expliqué...

    Encore merci pour votre aide !

  6. #6
    Membre éclairé
    Homme Profil pro
    Data Scientist
    Inscrit en
    Février 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Scientist

    Informations forums :
    Inscription : Février 2017
    Messages : 28
    Par défaut
    Tu peux obtenir facilement la somme des colonnes de ta matrice avec la fonction colSums() . Pour faire la somme des lignes, c'est rowSums(). Ce sont des fonctions de bases de R, une simple recherche de ta part aurait pu te permettre de trouver la solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    li=6
    co=7
     
    Matrice=matrix(sample(1:5,li*co,replace=TRUE),nrow=li,ncol=co)
     
    > Matrice
         [,1] [,2] [,3] [,4] [,5] [,6] [,7]
    [1,]    4    5    4    3    5    1    5
    [2,]    1    5    2    2    2    3    1
    [3,]    1    3    3    3    3    4    3
    [4,]    4    1    4    5    4    4    1
    [5,]    1    1    2    1    5    5    1
    [6,]    5    5    4    1    1    5    4
     
    #Tu isoles les lignes 2, 4, 5 et 6
    ligne=c(2,4,5,6)
     
    #Tu obtiens la somme des colonnes de ces 4 lignes
    > colSums(Matrice[ligne,])
    [1] 11 12 12  9 12 17  7

Discussions similaires

  1. référencement sur une matrice
    Par bni dans le forum C++
    Réponses: 3
    Dernier message: 24/03/2005, 00h06
  2. [PL/SQL] définir une matrice
    Par lalystar dans le forum Oracle
    Réponses: 5
    Dernier message: 22/02/2005, 15h27
  3. [JTable] remplir avec une matrice
    Par ybdz dans le forum Composants
    Réponses: 3
    Dernier message: 08/12/2004, 21h03
  4. Recherche des coefficients d'une matrice 3x3
    Par colorid dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 25/11/2004, 16h52
  5. Déclarer une matrice
    Par joy dans le forum C
    Réponses: 7
    Dernier message: 09/12/2002, 00h42

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