• [^] # Re: reproductible en collaboratif

    Posté par (site web personnel) . En réponse au journal Préparation de figures avec R : automatiser l'ajout d'annotations manuelles. Évalué à 3. Dernière modification le 20 septembre 2021 à 22:56.

    C'est vrai que base::dput() peut convertir au format "code à copier-coller" une gamme d'objets R beaucoup plus large que tibble::tribble(). Mais j'aime bien utiliser tribble() quand je dois utiliser une petite data.frame dans un exemple simple, comme ici, plutôt que la sortie de dput() car je trouve le format de tribble() beaucoup plus facile à lire dans un contexte pédagogique :)

    Pour comparaison, voici la sortie de dput() pour générer le même objet z que le code du journal qui utilise tribble() :

    structure(list(ville = c("Paris", "Marseille", "Lyon", "Toulouse", 
     "Nice", "Nantes", "Montpellier", "Strasbourg", "Bordeaux", "Lille", 
     "Rennes", "Reims", "Toulon", "Saint-Étienne", "Le Havre", "Brest", 
     "Biarritz"), lat = c(48.86, 43.3, 45.76, 43.6, 43.7, 47.22, 43.61, 
     48.57, 44.84, 50.64, 48.11, 49.26, 43.12, 45.43, 49.49, 48.39, 
     43.48), lon = c(2.35, 5.37, 4.83, 1.44, 7.27, -1.55, 3.88, 7.75, 
     -0.58, 3.06, -1.68, 4.03, 5.93, 4.39, 0.1, -4.49, -1.56), superficie_km2 = c(105.4, 
     240.62, 47.87, 118.3, 71.92, 65.19, 56.88, 78.26, 49.36, 34.51, 
     50.39, 47.02, 42.84, 79.97, 46.95, 49.51, 11.66), habitants = c(2175601, 
     868277, 518635, 486828, 341032, 314138, 290053, 284677, 257068, 
     233098, 217728, 182211, 176198, 173089, 169733, 139602, 25532
     )), row.names = c(NA, -17L), class = c("tbl_df", "tbl", "data.frame"
     ))

    À noter aussi que vous pouvez utiliser le paquet datapasta pour générer facilement le code tribble() correspondant à la data.frame que vous voulez reproduire ! datapasta::dpasta() est un peu l'équivalent de base::dput() pour les tableaux de données. Par exemple, pour préparer le code du journal, je suis en fait parti des données stockées dans un fichier tsv puis j'ai utilisé :

    library(readr)
    z <- read_tsv("villes-france.tsv")
    datapasta::dpasta(z)

    Ce qui m'a affiché dans ma console:

    tibble::tribble(
     ~ville, ~lat, ~lon, ~superficie_km2, ~habitants,
     "Paris", 48.86, 2.35, 105.4, 2175601,
     "Marseille", 43.3, 5.37, 240.62, 868277,
     "Lyon", 45.76, 4.83, 47.87, 518635,
     "Toulouse", 43.6, 1.44, 118.3, 486828,
     "Nice", 43.7, 7.27, 71.92, 341032,
     "Nantes", 47.22, -1.55, 65.19, 314138,
     "Montpellier", 43.61, 3.88, 56.88, 290053,
     "Strasbourg", 48.57, 7.75, 78.26, 284677,
     "Bordeaux", 44.84, -0.58, 49.36, 257068,
     "Lille", 50.64, 3.06, 34.51, 233098,
     "Rennes", 48.11, -1.68, 50.39, 217728,
     "Reims", 49.26, 4.03, 47.02, 182211,
     "Toulon", 43.12, 5.93, 42.84, 176198,
     "Saint-Étienne", 45.43, 4.39, 79.97, 173089,
     "Le Havre", 49.49, 0.1, 46.95, 169733,
     "Brest", 48.39, -4.49, 49.51, 139602,
     "Biarritz", 43.48, -1.56, 11.66, 25532
     )