Partage
  • Partager sur Facebook
  • Partager sur Twitter

R - renommer des colonnes via une fonction

Error in dimnames(x) <- dn : length of 'dimnames' [1]

Sujet résolu
    5 mai 2019 à 14:01:52

    Bonjour, 

    je suis en train de créer un data frame de quelques lignes sur des centaines de colonnes et je voudrais renommer ces colonnes mais toutes avec un nom spécial. Donc je voudrais les renommer via une boucle for si possible.

    J'ai pour ça déjà créer une fonction switch case qui s'appelle id() (qui return une string) et j'ai juste à mettre le numéro de ma colonne dans la fonction et j'ai le bon nom qui ressort.

    Aussi j'ai d'abord essayé le code qui suit :

    championData2 <- championData2[ , - c(1:743)]
    for(cpt in 1:743)
    {
      championData2 <- cbind(championData2,deparse.level=2,id(cpt))
    }

    Ici je supprime les colonnes non-initialisées que j'ai créé auparavant car apparemment c'est impossible de renommer des colonnes une par une.

    Du coup je les re-créé avec le bon nom.

    Le problème c'est que là, toutes mes lignes ont le nom qui est return par la fonction ID (c'est pas très grave, étant donné qu'elles ne sont pas encore initialisées) et la colonne à pour nom "id(cpt)". Alors que je veux la string retournée et non l'appel de la fonction >< 

    Sinon j'ai essayé une deuxième méthode (J'ai concaténé le tableau juste pour le test à 6 colonnes) :

    Tout faire, "a la main" avec :

    names(championData2) <- c(id(1),id(2),id(3),id(4),id(5),id(6))

    Mais là j'ai une erreur :

    Error in dimnames(x) <- dn : 

      length of 'dimnames' [1] not equal to array extent

    J'ai cherché sur internet, et au bout de la 5ème page google (et la dernière accessoirement) je n'ai toujours rien trouvé.

    Si vous savez comment résoudre une des 2 méthodes ce serait cool, surtout la première :p

    -
    Edité par LilianArget 5 mai 2019 à 14:02:59

    • Partager sur Facebook
    • Partager sur Twitter
      5 mai 2019 à 14:58:35

      Salut !

      J'ai pas tout saisi, mais de manière évidente : tu veux renommer des colonnes d'un df et je n'ai pas vu la fonction colnames() dans ton script !

      Tu devrais essayer :

      for (cpt in 1:743)

      {

           colnames(championData2)[cpt] = id(cpt);

      }

      Tu n'as d'ailleurs pas besoin de supprimer ces colonnes du dataframe.

      -
      Edité par galactose 5 mai 2019 à 16:10:16

      • Partager sur Facebook
      • Partager sur Twitter
        6 mai 2019 à 11:33:52

        J'ai essayé d'utiliser la fonction mais d'une autre manière mais qui marchait pas alors j'ai laissé tombé.

        Je viens de réessayer avec ce code, et j'ai l'erreur suivante :

        Error in dimnames(x) <- dn : 

          length of 'dimnames' [2] not equal to array extent

        EDIT :

        J'ai résolu mon erreur : 

        En faite j'importais championData2 d'un autre data frame modifié.

        J'ai juste utilisé as.data.frame() lors de l'import et ça marche.

        Merci galactose :)

        -
        Edité par LilianArget 6 mai 2019 à 11:58:15

        • Partager sur Facebook
        • Partager sur Twitter

        R - renommer des colonnes via une fonction

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown