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 :

Application de la fonction apply


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Actuaire
    Inscrit en
    Janvier 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Actuaire

    Informations forums :
    Inscription : Janvier 2018
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Application de la fonction apply
    J'ai construit la fonction "Rang" ci-dessous pour le calcul du range d'une échéance( qui est une date).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rang=function(x,y,z){round((12*(year(y)-year(x))+month(y)-month(x)+(day(y)-day(x))/30)*z/12,0)+1}
    PRÉOCCUPATION

    Je voudrais appliquer la fonction apply à la fonction "Rang" ci-dessus et à la donnée "matrice" ci-dessous

    Merci de bien vouloir me donner un coup de main

    J'ai essayer ceci:

    où:

    matrice[,c(1:10)]=
    echeance DATE_EFF PERIODICITE
    1 2017-01-01 1991-12-01 12
    2 2017-01-01 1992-01-01 12
    3 2017-01-01 1992-02-01 12
    4 2017-01-01 1992-03-01 12
    5 2017-01-01 1989-10-01 12
    6 2017-01-01 1992-08-01 12
    7 2017-01-01 1992-11-01 12
    8 2017-01-01 1993-01-01 12
    9 2017-01-01 1993-01-01 12
    10 2017-01-01 1993-01-01 12


    Et le résultat est malheureusement le message d'erreur suivant:

    Error in year(y) : argument "y" is missing, with no default

    Je ne sais plus comment faire.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Points : 561
    Points
    561
    Par défaut
    Bonjour (?!),

    la fonction Rang nécessite trois arguments : x, y et z , alors que la fonction apply va travailler sur un vecteur qui est les données en lignes (disons "x").
    Par conséquent quand tu appliques ta fonction Rang, apply va passer toutes tes données au "x" de ta fonction, il ne va pas séparer les données en fonction de chaque colonne, il va les conserver dans un seul vecteur.
    Pour t'en convaincre tape : apply(matrice, 1, function(x) print(x)).
    Par chance R vectorise les calculs, c'est a dire qu'au lieu de les faire valeur par valeur il peut les faire sur des vecteurs entiers de valeurs.
    Donc en faisant : Rang(matrice[,1], matrice[,2], matrice[,3]) ça devrait fonctionner et plus efficacement que si tu avais le calcul ligne par ligne.

    cdlt

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Actuaire
    Inscrit en
    Janvier 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Actuaire

    Informations forums :
    Inscription : Janvier 2018
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Merci Infiniment ça marche

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

Discussions similaires

  1. probleme fonction apply
    Par vince3001 dans le forum R
    Réponses: 2
    Dernier message: 14/01/2012, 20h16
  2. Application de la Fonction recherchev
    Par nokoss dans le forum Excel
    Réponses: 6
    Dernier message: 15/06/2011, 12h00
  3. Migration d'une application C# en une appli ASP.NET
    Par thierry.tagne dans le forum C#
    Réponses: 8
    Dernier message: 09/06/2011, 09h07
  4. Web Application, executer une fonction
    Par Zikas-r dans le forum Débuter
    Réponses: 2
    Dernier message: 10/06/2010, 03h54
  5. application de la fonction return
    Par ENSAM-ALAMI dans le forum MATLAB
    Réponses: 4
    Dernier message: 09/06/2008, 09h45

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