p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Nouveau Membre du Club
    Homme Profil pro
    touristepationné
    Inscrit en
    janvier 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : touristepationné
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2012
    Messages : 124
    Points : 38
    Points
    38

    Par défaut Explication concernant apply()

    Bonjour,

    Je suis débutant en programmation et je ne parviens pas à utiliser correctement la fonction apply().

    ?apply ne m'a pas assez éclairé pour pouvoir remplacer mes boucles for dans tous les cas.

    Voici un exemple très basique de ce que je n'arrive pas à faire avec apply (égal à mat<-matrice)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #1er tableau
    num<-c(1:5)
    Un <- c(3,"3W",10,5,5)
    Deux<-c(5,10,5,3,1)
    Trois<-c(4,4,4,4,3)
    matrice <- matrix(c(num,Un,Deux,Trois), nrow=5, ncol=4)
    #2eme tableau
    mat <- matrix(0, nrow=5, ncol=4)
    #duplication de matrice dans mat
    for (i in 1:nrow(matrice))
    {
    mat[i,]<-matrice[i,]
    }
    Quelqu'un pourrait-il m'expliquer ?

    Un grand merci par avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    MD, PhD, post-doc
    Inscrit en
    juillet 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : MD, PhD, post-doc
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2010
    Messages : 185
    Points : 548
    Points
    548

    Par défaut

    Bonjour,

    Le pdf de Vincent Goulet est très bien fait pour comprendre les fonctions apply (voir le chapitre 6).

    http://cran.r-project.org/doc/contri...ammation_R.pdf

    HTH

    Vincent

    PS : d'ailleurs, il serait intéressant de le rajouter sur la page d'accueil de r.developpez

  3. #3
    Nouveau Membre du Club
    Homme Profil pro
    touristepationné
    Inscrit en
    janvier 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : touristepationné
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2012
    Messages : 124
    Points : 38
    Points
    38

    Par défaut

    Ce lien va m'être très utile...

    Mais malgré sa lecture ainsi que celle d'autres tutos, je n'arrive toujours pas à remplacer mes boucles for concernant l'exemple de mon post.
    Pour ce qui est de faire une addition de lignes ou de colonnes, je suis au top mais pas pour remplacer les valeurs d'une seule colonne d'un tableau par celles d'une autre colonne d'un autre tableau en y rajoutant un calcul.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    apply(matrice,1,function(x){matrice[,1]+1})
    Erreur dans matrice[, 1] + 1 :
    argument non numérique pour un opérateur binaire
    Certes, je ne suis pas doué, mais j'aurais au moins essayé...

    Sinon, puisque vous parlez de rajouter des tutos sur le forum, il pourrait être pratique de créer une sorte d'annuaire des réponses de R face à ce genre d'erreur de débutant ou d'étourderies. Un moteur de recherche trouverait facilement la page, et l'utilisateur trouverait sa réponse sans passer pour un boulet

    Cordialement.

    B65

  4. #4
    Membre expérimenté
    Homme Profil pro
    MD, PhD, post-doc
    Inscrit en
    juillet 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : MD, PhD, post-doc
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2010
    Messages : 185
    Points : 548
    Points
    548

    Par défaut

    Bonjour,

    Je n'aime pas la fonction apply. Je préfère les autres et surtout lapply et sapply. Voici un exemple :

    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
    # Création d'un matrice
    matrice <- matrix(1:10, 2, 5)
     
    # But : multiplier chaque élément par deux
    # Solution évidente
    matrice2 <- matrice * 2
     
    # Boucle for
    matrice2 <- matrix(0, 2, 5)
    for (i in 1:ncol(matrice)) {
     matrice2[, i] <- matrice[, i] * 2
    }
     
    # sapply
    matrice2 <- sapply(1:ncol(matrice), function(i) {
     matrice[, i] * 2
    })
    En bref, ce que vous mettez dans "for(...)" se retrouve en premier argument de sapply et le "corps" de la boucle se retrouve dans une fonction. L'assignation ne se fait plus dans le "corps" puisqu'on utilise une fonction (scope, variables locales, globales...) mais en tant que résultat de la fonction sapply. Dans cet exemple, je sais plus ou moins que sapply va me renvoyer une matrice donc ça me suffit.

    HTH

    Vincent

  5. #5
    Nouveau Membre du Club
    Homme Profil pro
    touristepationné
    Inscrit en
    janvier 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : touristepationné
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2012
    Messages : 124
    Points : 38
    Points
    38

    Par défaut

    Merci pour votre aide. Entre vos explications et le lien que vous avez transmis, je pense avoir de quoi avancer un bon moment.

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

Discussions similaires

  1. Demande d'explication concernant du code
    Par matinho dans le forum ASP.NET
    Réponses: 7
    Dernier message: 10/03/2009, 15h01
  2. Réponses: 3
    Dernier message: 29/10/2008, 14h37
  3. Explications concernant deux compteurs de performances
    Par Immobilis dans le forum MS SQL-Server
    Réponses: 16
    Dernier message: 29/02/2008, 16h41
  4. explication concernant UserForm
    Par Lelie dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/12/2007, 15h27
  5. Explication concernant le sous-forum Autres et le forum Bibliothèques
    Par hiko-seijuro dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 22/06/2007, 23h54

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