Écrire des données dans plusieurs formats
Exportez des data frames vers CSV, Excel et RDS avec write_csv() et writexl.
Écrire des données dans plusieurs formats est une leçon R Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage R Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours R Academy comprend 4 leçons au total.
Écrire des données depuis R
La lecture des données ne représente que la moitié du travail : vous devez également enregistrer les résultats. R prend en charge plusieurs formats de sortie : CSV pour une compatibilité universelle, RDS pour conserver exactement les objets R, Parquet pour l'analytique hautes performances, et bien d'autres. Choisissez le format en fonction de votre public et de votre cas d'utilisation.
library(readr)
# Create a sample data frame to write
df <- data.frame(
name = c('Alice','Bob','Carol'),
score = c(85.5, 92.0, 78.3),
grade = c('B','A','C'),
passed = c(TRUE, TRUE, TRUE)
)
print(df)
cat('\nWe will save this in multiple formats!')write_csv() — Enregistrer au format CSV
write_csv(df, 'file.csv') enregistre un bloc de données dans un fichier séparé par des virgules. La fonction n'écrit PAS les noms de lignes par défaut (contrairement à write.csv()). Le résultat est toujours encodé en UTF-8. Elle renvoie le bloc de données de manière invisible, ce qui permet de l'utiliser dans des tubes.
library(readr)
df <- data.frame(
name = c('Alice','Bob','Carol'),
score = c(85, 92, 78)
)
# Write to /tmp for demonstration
write_csv(df, '/tmp/students.csv')
# Verify by reading back
read_csv('/tmp/students.csv', show_col_types=FALSE)Options de write_csv()
write_csv() accepte plusieurs options : na='NA' contrôle la manière dont les valeurs NA sont écrites, append=TRUE ajoute les données à un fichier existant, col_names=FALSE omet l'en-tête, et quote contrôle les situations dans lesquelles les champs sont placés entre guillemets.
library(readr)
df <- data.frame(
name = c('Alice','Bob'),
city = c('New York','Los,Angeles'), # Contains comma
score = c(85, NA)
)
# na='' writes NA as empty string (common Excel convention)
write_csv(df, '/tmp/test_write.csv', na='')
cat(paste(read_lines('/tmp/test_write.csv'), collapse='\n'))write_tsv() — Sortie séparée par des tabulations
write_tsv(df, 'file.tsv') enregistre les données dans un format séparé par des tabulations. Ce format est préférable lorsque les données contiennent des virgules ou lorsque le système en aval attend du TSV. Les options sont les mêmes que pour write_csv().
library(readr)
df <- data.frame(
address = c('123 Main St, NYC','456 Oak Ave, LA'),
score = c(85, 92)
)
# TSV avoids delimiter conflict with commas in addresses
write_tsv(df, '/tmp/addresses.tsv')
cat(paste(read_lines('/tmp/addresses.tsv'), collapse='\n'))saveRDS() — Enregistrer n'importe quel objet R
saveRDS(obj, 'file.rds') sérialise n'importe quel objet R sur le disque, dans le format binaire natif de R. readRDS('file.rds') le restaure à l'identique : types de colonnes, facteurs, attributs et même objets de modèles sont conservés. Le format n'est pas lisible par un humain, mais il est parfaitement portable entre les sessions R.
library(readr)
df <- data.frame(
name = c('Alice','Bob'),
score = c(85.5, 92.0),
grade = factor(c('B','A'), levels=c('A','B','C','D'))
)
# Save with full type preservation
saveRDS(df, '/tmp/students.rds')
# Restore exactly
df2 <- readRDS('/tmp/students.rds')
print(df2)
print(class(df2$grade)) # factor — preserved!saveRDS() et save() — Différence essentielle
saveRDS(obj, 'file.rds') enregistre un seul objet sans son nom. readRDS() vous permet de lui attribuer n'importe quel nom. save(obj1, obj2, 'file.RData') enregistre plusieurs objets nommés ; load() les restaure avec leurs noms d'origine (et peut écraser des variables existantes).
# saveRDS: single object, flexible on load
model <- lm(mpg ~ wt, data=mtcars)
saveRDS(model, '/tmp/my_model.rds')
best_model <- readRDS('/tmp/my_model.rds') # Any name!
cat('R-squared:', round(summary(best_model)$r.squared, 3), '\n')
# save: multiple named objects, fixed names on load
# save(model, mtcars, file='/tmp/workspace.RData')
# load('/tmp/workspace.RData') # Restores 'model' and 'mtcars'write_delim() — Délimiteur personnalisé
write_delim(df, file, delim='|') écrit les données avec n'importe quel délimiteur. Utilisez cette fonction lorsque le système en aval attend un format séparé par des barres verticales ou un autre format non standard. Les mêmes garanties de qualité des données que pour write_csv() s'appliquent.
library(readr)
df <- data.frame(
id = 1:3,
name = c('Alice','Bob','Carol'),
value = c(100, 200, 150)
)
# Write pipe-delimited
write_delim(df, '/tmp/data.psv', delim='|')
cat(paste(read_lines('/tmp/data.psv'), collapse='\n'))Sortie Excel avec writexl
Le package writexl (complément de readxl) écrit les blocs de données au format .xlsx : writexl::write_xlsx(df, 'file.xlsx'). Pour plusieurs feuilles, transmettez une liste nommée. Java ou l'installation d'Excel ne sont pas nécessaires.
# writexl::write_xlsx() — example (library not always available)
# library(writexl)
df1 <- data.frame(name=c('Alice','Bob'), score=c(85,92))
df2 <- data.frame(region=c('East','West'), sales=c(100,200))
# Single sheet:
# write_xlsx(df1, '/tmp/students.xlsx')
# Multiple sheets (named list):
# write_xlsx(
# list(students=df1, sales=df2),
# '/tmp/report.xlsx'
# )
cat('writexl writes pure .xlsx without Java or Excel!')Fichiers Parquet avec arrow
Apache Parquet est un format de stockage en colonnes idéal pour les grands jeux de données : il se compresse bien et se lit beaucoup plus rapidement que le CSV pour les requêtes orientées colonnes. Le package arrow fournit write_parquet() et read_parquet().
# arrow::write_parquet() concept
# library(arrow)
# Large CSV -> Parquet (10-100x smaller, 10-100x faster reads)
# df <- read_csv('big_file.csv')
# write_parquet(df, 'big_file.parquet')
# df_back <- read_parquet('big_file.parquet')
# Parquet benefits:
# - Columnar: only reads columns you need
# - Compressed: ~10x smaller than CSV
# - Typed: no type re-guessing on read
# - Partitioned: split by date/region for parallel reads
cat('Parquet is the modern standard for large-scale analytics in R!')Écrire des données dans un pipeline
write_csv() et saveRDS() renvoient toutes deux leur entrée de manière invisible, ce qui permet de les utiliser dans un tube sans interrompre le flux. Insérez une étape d'écriture au milieu du pipeline avec un point de contrôle write_csv() afin de garantir la reproductibilité.
library(readr)
library(dplyr)
# Write mid-pipeline as a checkpoint
final_result <- data.frame(
region=c('East','West','North'),
sales=c(100,200,80)
) %>%
mutate(pct = round(100*sales/sum(sales),1)) %>%
{. ->> checkpoint_df; .} %>% # Save checkpoint
filter(sales > 90)
write_csv(checkpoint_df, '/tmp/checkpoint.csv')
print(final_result)Guide de sélection du format
Le choix du format de sortie approprié dépend de votre objectif :
- CSV/TSV : universel, lisible par les humains, ouvrable par tout le monde
- RDS : de R à R, conserve exactement tous les types et attributs
- xlsx : utilisateurs professionnels, utilisateurs d'Excel
- Parquet : grandes quantités de données, pipelines analytiques, systèmes de production
- JSON : API, données imbriquées ou hiérarchiques (
jsonlite::toJSON())
library(readr)
df <- data.frame(
id = 1:5,
value = c(10.5, 20.3, 15.7, 30.1, 25.8)
)
# CSV — universal
write_csv(df, '/tmp/data.csv')
# TSV — when commas are in data
write_tsv(df, '/tmp/data.tsv')
# RDS — R-native, type-preserving
saveRDS(df, '/tmp/data.rds')
cat('Files created:\n')
cat('CSV size:', file.size('/tmp/data.csv'), 'bytes\n')
cat('RDS size:', file.size('/tmp/data.rds'), 'bytes\n')Vérification rapide
Quel est le principal avantage de saveRDS() par rapport à write_csv() pour enregistrer des données R ?
Récapitulatif : écrire des données
Points essentiels pour écrire des données depuis R :
write_csv(df, 'file.csv')— séparé par des virgules, sans noms de lignes, UTF-8write_tsv(df, 'file.tsv')— sortie séparée par des tabulationswrite_delim(df, file, delim='|')— n'importe quel délimiteursaveRDS(obj, 'file.rds')— format binaire de R, conserve tous les typesreadRDS('file.rds')— permet d'attribuer n'importe quel nom ;load()restaure les noms d'originewritexl::write_xlsx()— sortie Excel, Java n'est pas nécessairearrow::write_parquet()— format en colonnes pour les grands jeux de données analytiques
library(readr)
df <- data.frame(
name = c('Alice','Bob','Carol'),
score = c(85.5, 92.0, 78.3),
grade = factor(c('B','A','C'))
)
# CSV: universal but loses factor
write_csv(df, '/tmp/demo.csv')
df_csv <- read_csv('/tmp/demo.csv', show_col_types=FALSE)
cat('CSV grade type:', class(df_csv$grade), '\n') # character
# RDS: preserves factor
saveRDS(df, '/tmp/demo.rds')
df_rds <- readRDS('/tmp/demo.rds')
cat('RDS grade type:', class(df_rds$grade)) # factorQuestions Fréquemment Posées
La leçon « Écrire des données dans plusieurs formats » est-elle gratuite ?
Oui — le texte complet de « Écrire des données dans plusieurs formats » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours R Academy, passe à CoddyKit PRO. Le cours R Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Écrire des données dans plusieurs formats » ?
Exportez des data frames vers CSV, Excel et RDS avec write_csv() et writexl. Tu pratiques R Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer R Academy ?
Aucune expérience préalable n'est requise. R Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Écrire des données dans plusieurs formats » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon R Academy ?
Oui. Chaque leçon R Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Lire des fichiers CSV avec read_csv()
- Analyser des fichiers TSV et à largeur fixe
- Importer des fichiers Excel avec readxl
- Écrire des données dans plusieurs formats