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 :

cod'erreur 1 dans le sous programme Lapack 'dgesdd'


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 83
    Points : 60
    Points
    60
    Par défaut cod'erreur 1 dans le sous programme Lapack 'dgesdd'
    En voulant réaliser une ACM sur un fichier de données composées de 754 403 lignes et 9 variables toutes 'factor', R me retroune le message d'erreur suivant :

    " cod'erreur 1 dans le sous programme Lapack 'dgesdd' "

    Pour info, je réalise mon ACM avec le package FactoMineR. Et la commande MCA.

    Merci, en espérant une réponse à ce problème.

  2. #2
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut
    Bonjour,
    Est ce que vous pourriez poster votre bout de code et le résultat de la commande suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str(Mesdonnes)# Mes données (les données que vous utilisz
    Merci

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
     
    data<-read.table("C:/Users/Miles/Desktop/projet sous r/Femmes_frais_mensuels.txt",sep=";",dec=",",header=TRUE)
     
    Region<-as.factor(data$REGION)
    Surcomp<-as.factor(data$Surcomplémentaire)
    Type<-as.factor(data$Type)
    Age<-as.factor(data$Tranche.d.age)
    Ancienneté<-as.factor(data$Expr1)
    Code.activité<-as.factor(data$DC...LibellÃ..code.activitÃ.)
    Regroup.Poste.soins<-as.factor(data$Regroupement.1)
     
    don<-data.frame(Frais.Mensuels,Quantité.Actes,Region,Surcomp,Type,Age,Ancienneté,Code.activité,Regroup.Poste.soins)
     
    row.names(don)<-row.names(data)
     
    options(max.print=100000000)
     
     
    don$Region <- ifelse(
    test=as.character(don$Region) %in% c("Aquitaine", "Midi Pyrénées","Languedoc Roussillon", "Provence Alpes Cote d'Azur","Rhône Alpes","Centre","Auvergne","Auvergne  ","Limousin"),
    yes= "CENTRE_SUD",
    no = as.character(don$Region))
    don$Region <- as.factor(don$Region) 
     
     
    don$Region <- ifelse(
    test=as.character(don$Region) %in% c("Bretagne", "Pays de Loire","Poitou Charentes"),
    yes= "OUEST",
    no = as.character(don$Region))
    don$Region <- as.factor(don$Region) 
     
     
     
    don$Region <- ifelse(
    test=as.character(don$Region) %in% c("Normandie ( Haute )", "Normandie ( Basse )","Ile de France"),
    yes= "Region Parisienne + Normandie",
    no = as.character(don$Region))
    don$Region <- as.factor(don$Region) 
     
     
    don$Region <- ifelse(
    test=as.character(don$Region) %in% c("Nord Pas de Calais", "Picardie","DOM TOM ou autres"),
    yes= "NORD + DOM TOM et autres",
    no = as.character(don$Region))
    don$Region <- as.factor(don$Region) 
     
     
    don$Region <- ifelse(
    test=as.character(don$Region) %in% c("Alsace", "Franche Comté","Champagne Ardennes", "Lorraine","Bourgogne"),
    yes= "EST",
    no = as.character(don$Region))
    don$Region <- as.factor(don$Region) 
     
     
    don$Surcomp <- ifelse(
    test=as.character(don$Surcomp) %in% c("OUI"),
    yes= "Surcomplémentaire",
    no = as.character(don$Surcomp))
    don$Surcomp <- as.factor(don$Surcomp) 
     
    don$Surcomp <- ifelse(
    test=as.character(don$Surcomp) %in% c("NON"),
    yes= "Base",
    no = as.character(don$Surcomp))
    don$Surcomp <- as.factor(don$Surcomp) 
     
     
     
    don$Ancienneté <- ifelse(
    test=as.character(don$Ancienneté) %in% c("- 1 mois","1 à 3 mois","3 à 6 mois","6 à 9 mois","9 à 12 mois","12 à 15  mois","15 à 18 mois","18 à 21 mois"),
    yes= "partiellement",
    no = as.character(don$Ancienneté))
    don$Ancienneté <- as.factor(don$Ancienneté) 
     
     
    don$Ancienneté <- ifelse(
    test=as.character(don$Ancienneté) %in% c("21 à 24 mois"),
    yes= "totalement",
    no = as.character(don$Ancienneté))
    don$Ancienneté <- as.factor(don$Ancienneté) 
     
     
    don$Type <- ifelse(
    test=as.character(don$Type) %in% c("Isolé"),
    yes= "1 PERSONNE",
    no = as.character(don$Type))
    don$Type <- as.factor(don$Type) 
     
    don$Type <- ifelse(
    test=as.character(don$Type) %in% c("Couple","Isolé * 2enfants","Famille * 1enfant","Isolé * 1enfant"),
    yes= "2 ou 3 PERSONNES",
    no = as.character(don$Type))
    don$Type <- as.factor(don$Type) 
     
    don$Type <- ifelse(
    test=as.character(don$Type) %in% c("Famille * 2enfants","Famille * 3 ou + enfants","Isolé * 3 ou + enfants"),
    yes= "+ 3 PERSONNES",
    no = as.character(don$Type))
    don$Type <- as.factor(don$Type) 
     
     
    don$Age <- ifelse(
    test=as.character(don$Age) %in% c("17 à 22","22 à 27"),
    yes= "17 à 27",
    no = as.character(don$Age))
    don$Age <- as.factor(don$Age) 
     
     
    don$Age <- ifelse(
    test=as.character(don$Age) %in% c("27 à 32","32 à 37"),
    yes= "27 à 37",
    no = as.character(don$Age))
    don$Age <- as.factor(don$Age) 
     
     
    don$Age <- ifelse(
    test=as.character(don$Age) %in% c("37 à 42","42 à 47"),
    yes= "37 à 47",
    no = as.character(don$Age))
    don$Age <- as.factor(don$Age) 
     
     
    don$Age <- ifelse(
    test=as.character(don$Age) %in% c("47 à 52","52 à 57"),
    yes= "47 à 57",
    no = as.character(don$Age))
    don$Age <- as.factor(don$Age) 
     
    don$Age <- ifelse(
    test=as.character(don$Age) %in% c("57 à 62","62 à 67","Plus de 67"),
    yes= "57 et plus",
    no = as.character(don$Age))
    don$Age <- as.factor(don$Age) 
     
     
     
    don$Code.activité <- ifelse(
    test=as.character(don$Code.activité) %in% c("Agroalimentaire","Constr. navales","Industrie des métaux","Ind. du meuble","Ind. mecaniques","Imprimerie","Papier Verre Carton","Automobiles","Autres industries","Textile Habil.","Chimie/Plasturg","Pharmacie","Energie/Envir.","Batiment/TP","Mat. construct."),
    yes= "SECONDAIRE",
    no = as.character(don$Code.activité))
    don$Code.activité <- as.factor(don$Code.activité) 
     
     
    don$Code.activité <- ifelse(
    test=as.character(don$Code.activité) %in% c("Banques","Distribution","Secteur Public","Informatique","Sans objet","Transport","Services","V.I.P."),
    yes= "TERTIAIRE/AUTRES",
    no = as.character(don$Code.activité))
    don$Code.activité <- as.factor(don$Code.activité) 
     
     
    don$Regroup.Poste.soins <- ifelse(
    test=as.character(don$Regroup.Poste.soins) %in% c("Consultations - visites","Consultations","Majorations","Indemnités de déplacement","Visites"),
    yes= "CONSULTATIONS",
    no = as.character(don$Regroup.Poste.soins))
    don$Regroup.Poste.soins <- as.factor(don$Regroup.Poste.soins) 
     
     
    don$Regroup.Poste.soins <- ifelse(
    test=as.character(don$Regroup.Poste.soins) %in% c("Lentilles","Montures","Verres"),
    yes= "OPTIQUE",
    no = as.character(don$Regroup.Poste.soins))
    don$Regroup.Poste.soins <- as.factor(don$Regroup.Poste.soins) 
     
     
    don$Regroup.Poste.soins <- ifelse(
    test=as.character(don$Regroup.Poste.soins) %in% c("Honoraires","Forfait hospitalier","Chambre particulière","Frais de séjour"),
    yes= "HOSPI.",
    no = as.character(don$Regroup.Poste.soins))
    don$Regroup.Poste.soins <- as.factor(don$Regroup.Poste.soins) 
     
     
    don$Regroup.Poste.soins <- ifelse(
    test=as.character(don$Regroup.Poste.soins) %in% c("Prothèses","Orthodontie","Soins"),
    yes= "DENTAIRE",
    no = as.character(don$Regroup.Poste.soins))
    don$Regroup.Poste.soins <- as.factor(don$Regroup.Poste.soins) 
     
     
    don$Regroup.Poste.soins <- ifelse(
    test=as.character(don$Regroup.Poste.soins) %in% c("Analyses médicales","Autres soins","Autres","Actes de radiologie","Actes de spécialité","Soins à l'étranger"),
    yes= "ANALYSES/RADIO ET ACTES SPE.",
    no = as.character(don$Regroup.Poste.soins))
    don$Regroup.Poste.soins <- as.factor(don$Regroup.Poste.soins) 
     
     
    don$Regroup.Poste.soins <- ifelse(
    test=as.character(don$Regroup.Poste.soins) %in% c("Pharmacie"),
    yes= "PHARMA.",
    no = as.character(don$Regroup.Poste.soins))
    don$Regroup.Poste.soins <- as.factor(don$Regroup.Poste.soins) 
     
     
    don$Regroup.Poste.soins <- ifelse(
    test=as.character(don$Regroup.Poste.soins) %in% c("Transport","Auxiliaires médicaux","Divers","Obsèques","Cure thermale","Maternité","Autres prothèses",""),
    yes= "TRANSPORT/AUX. ET DIVERS",
    no = as.character(don$Regroup.Poste.soins))
    don$Regroup.Poste.soins <- as.factor(don$Regroup.Poste.soins)
     
    > str(don)
    'data.frame':   754403 obs. of  9 variables:
     $ Frais.Mensuels     : Factor w/ 3 levels "1","2","3": 2 3 3 1 3 2 2 2 2 1 ...
     $ Quantité.Actes     : Factor w/ 3 levels "1","2","3": 3 1 3 1 2 2 2 3 2 2 ...
     $ Region             : Factor w/ 5 levels "CENTRE_SUD","EST",..: 1 1 1 1 1 1 1 1 1 1 ...
     $ Surcomp            : Factor w/ 2 levels "Base","Surcomplémentaire": 1 1 1 1 1 1 1 1 1 1 ...
     $ Type               : Factor w/ 3 levels "+ 3 PERSONNES",..: 1 1 1 1 1 2 2 2 2 2 ...
     $ Age                : Factor w/ 5 levels "17 à 27","27 à 37",..: 3 3 3 3 3 5 5 5 5 5 ...
     $ Ancienneté         : Factor w/ 3 levels "12 à 15 mois",..: 2 2 2 2 2 3 3 3 3 3 ...
     $ Code.activité      : Factor w/ 2 levels "SECONDAIRE","TERTIAIRE/AUTRES": 2 2 2 2 2 2 2 2 2 2 ...
     $ Regroup.Poste.soins: Factor w/ 7 levels "ANALYSES/RADIO ET ACTES SPE.",..: 2 5 6 3 5 1 1 1 7 1 ...
     
    >library(FactoMineR)
     
    > ACM<-MCA(don)
    Erreur dans La.svd(x, nu, nv) : 
    code d'erreur 1 dans le sous-programme Lapack 'dgesdd'

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Je me permets de te signaler que tous tes blocs ifelse sont faux.

    Pour un rappel des regroupements sans if else, voir ici:

    http://www.developpez.net/forums/d13...ent-modalites/

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    Je m'excuse, j'ai joins le mauvais code (ancien script).
    Normalement mon ifelse est de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    REGION <- ifelse(
    test=as.character(data$Region) %in% c("Aquitaine", "Midi Pyrénées","Languedoc Roussillon", "Provence Alpes Cote d'Azur","Rhône Alpes","Centre","Auvergne","Auvergne  ","Limousin"),
    yes= "CENTRE_SUD",
    no = as.character(data$Region))
    REGION<- as.factor(data$Region)

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    C'est toujours faux.

    the condition has length > 1 and only the first element will be used
    N'aurais tu pas ça qui revient à chaque fois par hasard quand tu lances tous tes if ? ^^

    Autre erreur : REGION<- as.factor(data$Region) après ton if annule carrément tout ce que tu fais dans ton if.

    Voir l'ancien sujet que tu avais posté, tout est expliqué pour regrouper des modalités.

  7. #7
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut
    Bonjour,
    Je pense qu'à un moment donné, il y a des calculs de décomposition en valeurs singulières dans ton code avec la fonction La.svd(x, nu, nv).
    Vous pouvez essayer d'utiliser la fonction svd() de base (package base) en changeant l'argument LINPACK = FALSE en LINPACK = TRUE.
    Pour ce faire, vous copiez le contenu de la fonction (tapez juste svd sur votre console) et vous le recollez sur votre console en changeant l'argument LINPACK.
    Ou sinon, copiez-collez le code ci-dessous sur votre console et recommencez pour voir ce que ça donne.
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    svd <- function (x, nu = min(n, p), nv = min(n, p), LINPACK = TRUE) 
    {
        x <- as.matrix(x)
        if (any(!is.finite(x))) 
            stop("infinite or missing values in 'x'")
        dx <- dim(x)
        n <- dx[1L]
        p <- dx[2L]
        if (!n || !p) 
            stop("0 extent dimensions")
        if (is.complex(x)) {
            res <- La.svd(x, nu, nv)
            return(list(d = res$d, u = if (nu) res$u, v = if (nv) Conj(t(res$vt))))
        }
        if (!is.double(x)) 
            storage.mode(x) <- "double"
        if (!LINPACK) {
            res <- La.svd(x, nu, nv)
            return(list(d = res$d, u = if (nu) res$u, v = if (nv) t(res$vt)))
        }
        if (nu == 0L) {
            job <- 0L
            u <- double()
        }
        else if (nu == n) {
            job <- 10L
            u <- matrix(0, n, n)
        }
        else if (nu == p) {
            job <- 20L
            u <- matrix(0, n, p)
        }
        else stop("'nu' must be 0, nrow(x) or ncol(x)")
        job <- job + if (nv == 0L) 
            0L
        else if (nv == p || nv == n) 
            1L
        else stop("'nv' must be 0 or ncol(x)")
        v <- if (job == 0L) 
            double()
        else matrix(0, p, p)
        mn <- min(n, p)
        mm <- min(n + 1L, p)
        z <- .Fortran("dsvdc", as.double(x), n, n, p, d = double(mm), 
            double(p), u = u, n, v = v, p, double(n), as.integer(job), 
            info = integer(1L), DUP = FALSE, PACKAGE = "base")[c("d", 
            "u", "v", "info")]
        if (z$info) 
            stop(gettextf("error %d in 'dsvdc'", z$info), domain = NA)
        z$d <- z$d[1L:mn]
        if (nv && nv < p) 
            z$v <- z$v[, 1L:nv, drop = FALSE]
        z[c("d", if (nu) "u", if (nv) "v")]
    }
    Pour plus d'explications, vous pourrez parcourir cette discussion.

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    Le code premier des ifelse est correct selon moi. Je ne vois pas mon erreur, si ce n'est que que je remplace mes anciennes modalités de don$nom_variable par un nouveau regroupement.

    Le str() affiche bien ces nouveaux regroupements ... pourtant

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    La preuve :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    > summary(don)
     Frais.Mensuels Quantité.Actes                           Region      
     1:251529       1:257820       CENTRE_SUD                   :162824  
     2:251492       2:252746       EST                          :153102  
     3:251382       3:243837       NORD + DOM TOM et autres     :103767  
                                   OUEST                        :153066  
                                   Region Parisienne + Normandie:181644  
     
     
                  Surcomp                     Type                Age        
     Base             :610085   + 3 PERSONNES   :179137   17 à 27   : 76013  
     Surcomplémentaire:144318   1 PERSONNE      :254254   27 à 37   :224793  
                                2 ou 3 PERSONNES:321012   37 à 47   :229606  
                                                          47 à 57   :183783  
                                                          57 et plus: 40208  
     
     
             Ancienneté              Code.activité   
     12 à 15 mois : 22834   SECONDAIRE      :292483  
     partiellement:188969   TERTIAIRE/AUTRES:461920  
     totalement   :542600                            
     
     
     
     
                       Regroup.Poste.soins
     ANALYSES/RADIO ET ACTES SPE.:184519  
     CONSULTATIONS               :158637  
     DENTAIRE                    : 72675  
     HOSPI.                      : 53054  
     OPTIQUE                     : 86755  
     PHARMA.                     : 84719  
     TRANSPORT/AUX. ET DIVERS    :114044
    Comment ex^miquer ces regroupements, si mon code est faux ? Les totaux correspondent bien en faisant la somme des anciens.

    En parallèle, je te réponds arm et te remercie pour cette réponse. Je pense que R m'a renvoyé cette erreur due à une incapacité de traitement de la machine. Après avoir mis en variable supp. Surcomp, j'ai réussi à sortir l'ACM.

    Si jamais cette erreur, re-survient alors je prendrais ta fonction.

    Merci pour tout. Cependant, je ne comprends toujours pas ma première erreur. Puisque les regroupements se font effectivement bien ...

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

Discussions similaires

  1. [AC-2003] Gestion des erreurs dans les sous-programmes
    Par azertix dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/10/2010, 11h13
  2. récupération de valeurs dans un sous-programme
    Par Jasmine80 dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 12/08/2009, 09h51
  3. IAsyncResult dans un sous programme
    Par pierrot53 dans le forum Silverlight
    Réponses: 1
    Dernier message: 14/11/2008, 19h54
  4. reprendre une hash crée dans un sous programme
    Par fripette dans le forum Langage
    Réponses: 11
    Dernier message: 07/08/2007, 15h05
  5. Envoi d'informations dans un sous programme
    Par Tanguy Sarela dans le forum Linux
    Réponses: 3
    Dernier message: 22/12/2005, 16h57

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