Menulis Data dalam Pelbagai Format
Eksport bingkai data kepada CSV, Excel dan RDS dengan write_csv() serta writexl.
Menulis Data dalam Pelbagai Format ialah pelajaran R Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran R Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus R Academy merangkumi sejumlah 4 pelajaran.
Menulis Data daripada R
Membaca data hanyalah separuh daripada tugas — anda juga perlu menyimpan hasilnya. R menyokong pelbagai format keluaran: CSV untuk keserasian sejagat, RDS untuk mengekalkan objek R dengan tepat, Parquet untuk analitik berprestasi tinggi dan banyak lagi. Pilih format berdasarkan khalayak dan kegunaan anda.
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() — Simpan sebagai CSV
write_csv(df, 'file.csv') menyimpan bingkai data sebagai fail dipisahkan koma. Ia TIDAK menulis nama baris secara lalai (berbeza daripada write.csv()). Hasilnya sentiasa dikodkan dalam UTF-8. Fungsi ini mengembalikan bingkai data secara tidak kelihatan, jadi ia boleh digunakan dalam saluran paip.
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)Pilihan write_csv()
write_csv() menerima beberapa pilihan: na='NA' mengawal cara NA ditulis, append=TRUE menambah data pada fail sedia ada, col_names=FALSE mengabaikan pengepala, dan quote mengawal masa medan perlu diletakkan dalam tanda petikan.
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() — Keluaran Dipisahkan Tab
write_tsv(df, 'file.tsv') menyimpan data dalam format dipisahkan tab. Format ini lebih sesuai apabila data mengandungi koma atau sistem seterusnya menjangkakan TSV. Pilihannya sama seperti 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() — Simpan Sebarang Objek R
saveRDS(obj, 'file.rds') menyiriankan sebarang objek R ke cakera dalam format perduaan asli R. readRDS('file.rds') memulihkannya dengan tepat — termasuk jenis lajur, faktor, atribut dan juga objek model. Format ini tidak boleh dibaca oleh manusia, tetapi boleh dipindahkan dengan sempurna antara sesi 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() berbanding save() — Perbezaan Utama
saveRDS(obj, 'file.rds') menyimpan satu objek tanpa namanya. readRDS() membolehkan anda memberikannya sebarang nama. save(obj1, obj2, 'file.RData') menyimpan beberapa objek bernama; load() memulihkannya dengan nama asal (dan boleh menimpa pemboleh ubah sedia ada).
# 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() — Pembatas Tersuai
write_delim(df, file, delim='|') menulis data menggunakan sebarang pembatas. Gunakannya apabila sistem seterusnya menjangkakan format yang dipisahkan tanda paip atau format bukan piawai yang lain. Jaminan kualiti data yang sama seperti write_csv() turut terpakai.
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'))Keluaran Excel dengan writexl
Pakej writexl (rakan kepada readxl) menulis bingkai data dalam format .xlsx: writexl::write_xlsx(df, 'file.xlsx'). Untuk beberapa helaian, hantarkan senarai bernama. Java atau pemasangan Excel tidak diperlukan.
# 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!')Fail Parquet dengan arrow
Apache Parquet ialah format storan berasaskan lajur yang sesuai untuk set data besar: format ini memampat dengan baik dan dibaca jauh lebih pantas daripada CSV untuk pertanyaan berorientasikan lajur. Pakej arrow menyediakan write_parquet() dan 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!')Menulis Data dalam Saluran Paip
Kedua-dua write_csv() dan saveRDS() mengembalikan inputnya secara tidak kelihatan, menjadikannya boleh digunakan dalam saluran paip tanpa mengganggu aliran. Sisipkan langkah penulisan di tengah saluran paip dengan titik semak write_csv() untuk kebolehulangan.
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)Panduan Pemilihan Format
Pemilihan format keluaran yang sesuai bergantung pada matlamat anda:
- CSV/TSV: sejagat, boleh dibaca manusia dan boleh dibuka oleh sesiapa sahaja
- RDS: R-ke-R, mengekalkan semua jenis dan atribut dengan tepat
- xlsx: pengguna perniagaan, pengguna Excel
- Parquet: data besar, saluran paip analitik dan sistem pengeluaran
- JSON: API serta data bersarang/berhierarki (
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')Semakan Pantas
Apakah kelebihan utama saveRDS() berbanding write_csv() untuk menyimpan data R?
Imbas Kembali: Menulis Data
Perkara penting untuk menulis data daripada R:
write_csv(df, 'file.csv')— dipisahkan koma, tanpa nama baris, UTF-8write_tsv(df, 'file.tsv')— keluaran dipisahkan tabwrite_delim(df, file, delim='|')— sebarang pembatassaveRDS(obj, 'file.rds')— format perduaan R, mengekalkan semua jenisreadRDS('file.rds')— pulihkan dengan sebarang nama;load()memulihkan nama asalwritexl::write_xlsx()— keluaran Excel, Java tidak diperlukanarrow::write_parquet()— format berasaskan lajur untuk set data analitik besar
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)) # factorPelajari R dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 43
- Pelajaran
- 159
Soalan Lazim
Adakah pelajaran “Menulis Data dalam Pelbagai Format” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran R Academy, termasuk “Menulis Data dalam Pelbagai Format”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus R Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Menulis Data dalam Pelbagai Format”?
Eksport bingkai data kepada CSV, Excel dan RDS dengan write_csv() serta writexl. Anda berlatih R Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan R Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran R Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Menulis Data dalam Pelbagai Format” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran R Academy ini?
Ya. Setiap pelajaran R Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Membaca Fail CSV dengan read_csv()
- Menghurai Fail TSV dan Lebar Tetap
- Mengimport Fail Excel dengan readxl
- Menulis Data dalam Pelbagai Format