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 :

Problème de test sur valeurs de matrices


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Août 2012
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 8
    Par défaut Problème de test sur valeurs de matrices
    Bonjour,

    Je n'arrive pas à tester convenablement le résultat d'une division d'un élément de matrice par un autre. Je m'explique…

    Je crée trois matrices
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cjmeasure.in <- matrix(rep(0,4*l),,4)				#create a vector to contain measures
    minprojin <- matrix(rep(0,2*l),,2)
    maxprojin <- matrix(rep(0,2*l),,2)
    Elles sont donc en "double". Je remplis les deux premières colonnes de la matrice "cjmeasure.in" ainsi que la première colonne de "minprojin" et "maxprojin" à l'aide de résultats d'un calcul de programmation linéaire.

    Ensuite, je remplis les deuxièmes colonnes de "minprojin" et "maxprojin" à l'aide d'un autre problème de programmation linéaire, et complète mes valeurs de "cjmeasure.in" à l'aide de division faites à partir de "minprojin" et "maxprojin". Typiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cjmeasure.in[j,3] <- minprojin[j,1]/minprojin[j,2]
    cjmeasure.in[j,4] <- maxprojin[j,1]/maxprojin[j,2]
    Je souhaite enfin remplacer les éventuels valeurs égales à 1 dans "cjmeasure.in" par "NaN", de sorte qu'il reste de type "double".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (cjmeasure.in[j,4] == 1)
    {
    	cjmeasure.in[j,4] <- NaN
    }
    Et là, alors que la valeur de la colonne 4 de la ligne j vaut 1 (affiché "1" et non "1.0000000" comme dans les autres colonnes, chose assez étonnante!), elle n'est pas remplacée par NaN. Lorsque je teste , la réponse est "FALSE".

    Je ne comprend pas pourquoi. Quelqu'un pourrait-il m'aider/me guider?

    Merci d'avance,

    François

  2. #2
    Membre régulier
    Inscrit en
    Août 2012
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 8
    Par défaut
    Après investigations, je me rends compte que mon problème n'est que la conséquence du fait suivant :
    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
     
    > cjmeasure.in
               phi       pi super_phi super_pi
    [1,] 1.0000000 1.444444  0.000000        0
    [2,] 1.0000000 1.000000  0.000000        0
    [3,] 0.8833333 1.250000  0.000000        0
    [4,] 0.6769231 1.000000  1.023622        0
    [5,] 1.0000000 1.485294  0.000000        0
    [6,] 0.8461538 1.000000  0.000000        0
    [7,] 1.0000000 1.181818  0.000000        0
    [8,] 0.7416667 1.083333  0.000000        0
    > cjmeasure.in[5,1] == 1
      phi 
    FALSE
    > cjmeasure.in[2,1] == 1
     phi 
    TRUE
    Dans ma matrice cjmeasure.in, R pense que la valeur de l'élément [5,1] n'est pas égale à 1.
    Je ne comprends pas pourquoi. Tandis qu'il me dit que la valeur de l'élément [2,1] est bien égale à 1, elle.

    Est-ce que cela peut guider une éventuelle réponse?

  3. #3
    Membre régulier
    Inscrit en
    Août 2012
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 8
    Par défaut
    Citation Envoyé par mungo32 Voir le message
    Après investigations, je me rends compte que mon problème n'est que la conséquence du fait suivant :
    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
     
    > cjmeasure.in
               phi       pi super_phi super_pi
    [1,] 1.0000000 1.444444  0.000000        0
    [2,] 1.0000000 1.000000  0.000000        0
    [3,] 0.8833333 1.250000  0.000000        0
    [4,] 0.6769231 1.000000  1.023622        0
    [5,] 1.0000000 1.485294  0.000000        0
    [6,] 0.8461538 1.000000  0.000000        0
    [7,] 1.0000000 1.181818  0.000000        0
    [8,] 0.7416667 1.083333  0.000000        0
    > cjmeasure.in[5,1] == 1
      phi 
    FALSE
    > cjmeasure.in[2,1] == 1
     phi 
    TRUE
    Dans ma matrice cjmeasure.in, R pense que la valeur de l'élément [5,1] n'est pas égale à 1.
    Je ne comprends pas pourquoi. Tandis qu'il me dit que la valeur de l'élément [2,1] est bien égale à 1, elle.

    Est-ce que cela peut guider une éventuelle réponse?

    Nouvelle idée ce matin au réveil :"Puisque ce n'est pas égal à 1, ça vaut combien?"

    Premier test : est-ce que la valeur est strictement supérieure à 1 : TRUE
    Second : est-ce que la valeur est strictement inférieure à 1,0000001 : TRUE.
    Je vous laisse imaginer la suite: ma valeur "cjmeasure.in[5,1]" tourne aux environs de 1.0000000000000002220446 (alors qu'elle devrait être égale à 1).

    J'ai perdu beaucoup de temps, mais au moins maintenant je connais la fonction "round()" ainsi que "options(digits=22)"!

    Bonne journée à tous,

    François

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

Discussions similaires

  1. [Tableaux] Problème de test sur une variable
    Par Laurent64 dans le forum Langage
    Réponses: 7
    Dernier message: 20/05/2007, 14h04
  2. Test sur valeur d'un Hash
    Par aikinhdo dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2007, 08h38
  3. Problème de test sur la taille des fichiers
    Par gregal dans le forum Langage
    Réponses: 7
    Dernier message: 12/12/2006, 20h57
  4. [vba-access] Test sur valeur des champs puis publipostage
    Par realthunderbolt dans le forum Access
    Réponses: 1
    Dernier message: 01/08/2006, 16h38
  5. Réponses: 4
    Dernier message: 16/06/2005, 15h37

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