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 :

créer un data.frame vide


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 50
    Points : 50
    Points
    50
    Par défaut créer un data.frame vide
    C'est pas grand chose mais ça peut être utile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    df <- data.frame(v1 = NA, v2 = NA)
    df <- df %>% slice(0)
    valeurs <- c(1,2)
    names(valeurs) <- c("v1", "v2")
     
    ## ou sans tidyverse
    df <- data.frame(v1 = NA, v2 = NA)
    df <- head(df,0)
    valeurs <- c(1,2)
    df <- rbind(df,valeurs)
    Bonne journée à tous.

  2. #2
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    Désolé mais plusieurs commentaires sur ce code :
    1) les deux codes n'aboutissent pas au même résultat
    2) pourquoi écrire : et pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    df <- df %>% head( 0)
    # et
    df <- df %>% rbind( valeurs)
    ou ?
    Qu'est-ce qui justifie ces différences d'écriture. De plus, quelle écriture pour des fonctions comme cos, sqrt...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x %>% sqrt()
    # ou
    sqrt( x)
    ?
    3) la solution la plus simple pour un data.frame de longueur nulle est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df <- data.frame( v1=NULL, v2=NULL)

  3. #3
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    Pour compléter ma réponse d'hier, un comparaison en termes de temps des différentes solutions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    library( tidyverse)
    library( microbenchmark)
    microbenchmark( {df <- data.frame( v1=NA, v2=NA); df <- slice( df, 0)},
                           {df <- data.frame( v1=NA, v2=NA); df <- df %>% slice( 0)},
                           {df <- data.frame( v1=NA, v2=NA);df <- head( df, 0)},
                           {df <- data.frame( v1=NA, v2=NA);df <- df %>% head( 0)},
                           {df <- data.frame( v1=NULL, v2=NULL)},
                           times=1000)
    de cld=a, la solution la plus rapide à e, la plus lente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Unit: microseconds
                                        expr                                      min       lq      mean   median     uq      max   neval   cld
        {     df <- data.frame(v1 = NA, v2 = NA)     df <- slice(df, 0) }       517.460 536.2770 556.7736 544.830 558.5140 3662.843  1000    d 
     {     df <- data.frame(v1 = NA, v2 = NA)     df <- df %>% slice(0) }   605.984 626.0835 661.8551 635.920 651.7425 3856.997  1000     e
         {     df <- data.frame(v1 = NA, v2 = NA)     df <- head(df, 0) }     206.984 222.8080 240.7027 233.071 242.0520 3299.766  1000  b   
      {     df <- data.frame(v1 = NA, v2 = NA)     df <- df %>% head(0) } 299.785 312.4005 326.2070 324.161 332.2870  636.775  1000   c  
                           {     df <- data.frame(v1 = NULL, v2 = NULL) }         122.737 144.1200 156.6578 151.817 156.9490 3088.078  1000 a

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

Discussions similaires

  1. Créer une fonction qui remplace un data.frame
    Par rhipilaf dans le forum R
    Réponses: 4
    Dernier message: 25/02/2019, 15h21
  2. Réponses: 1
    Dernier message: 21/05/2014, 10h08
  3. Créer une data.frame à partir de plusieurs listes
    Par charlotte77 dans le forum R
    Réponses: 4
    Dernier message: 10/06/2013, 23h38
  4. Créer une nouvelle frame si nécessaire
    Par radiobrain dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/07/2006, 15h41
  5. Problème d'affichage: fenêtres (frames) vides!
    Par NdmaX dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 12/07/2005, 21h23

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