Bekerja dengan file
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan R di Coddy. Pelajaran 1 dari 57.
Program nyata terbagi ke dalam beberapa file. Di R, source("Greeting.R") menjalankan file lain dari awal hingga akhir, dan setiap fungsi yang didefinisikan file itu tersedia setelahnya:
# Greeting.R
greeting <- function(name) {
paste0("Hello, ", name, "!")
}
# main.R
source("Greeting.R")
cat(greeting("Ada"), "\n")Menjalankan main.R mencetak Hello, Ada!: baris source() memuat greeting() sebelum main.R memanggilnya.
Program dimulai dari file yang kamu jalankan, di sini main.R, dan R membacanya baris demi baris. Urutan itu penting: sebuah fungsi hanya tersedia setelah file yang mendefinisikannya dimuat dengan source, jadi baris source() harus berada di bagian atas:
# main.R
cat(greeting("Ada"), "\n") # Error: fungsi "greeting" tidak ditemukan
source("Greeting.R")
cat(greeting("Ada"), "\n") # berhasil: greeting() sekarang tersediaTata letak yang umum adalah satu class per file, dengan nama sesuai nama class: Account.R berisi constructor account dan method-nya, Shape.R berisi fungsi generik shape. Dalam tantangan di bagian ini, kodemu ditulis di file-file tersebut, sedangkan main.R berisi kode input/output yang disediakan, dengan baris source() sudah ada di bagian atasnya dalam urutan yang benar. Editor menampilkan setiap file sebagai tab.
Shape.R # fungsi generik yang dipakai bersama oleh setiap bentuk: jalankan source untuk file ini terlebih dahulu
Circle.R # class lingkaran dan method-nya
main.R # source("Shape.R"); source("Circle.R"); membaca input, mencetak hasilsource() menjalankan sebuah file di lingkungan global, sehingga fungsi dan variabelnya menjadi nama global. R tidak memiliki nama privat untuk file: jika dua file mendefinisikan helper(), definisi dari file yang terakhir di-source akan berlaku. Nilai yang ditulis pada baris tersendiri di file yang di-source juga tidak dicetak, jadi file yang seharusnya menampilkan sesuatu memanggil cat():
# Tools.R
total <- 0 # menjadi variabel global setelah dijalankan dengan source()
42 # tidak dicetak oleh source()
helper <- function(x) x * 2
# Other.R
helper <- function(x) x + 1 # dijalankan dengan source() belakangan: menggantikan helper di atasTantangan
MudahProgram ini memiliki dua file. main.R memuat Greeting.R, membaca nama, lalu mencetak hasil greeting(name) untuk setiap nama. Lengkapi greeting() di Greeting.R agar mengembalikan Hello, Ada! untuk nama Ada, atau Hello, friend! saat namanya kosong.
Kodemu ditulis di Greeting.R. main.R berisi kode input/output yang disediakan dan tidak dapat diedit.
Coba sendiri
source("Greeting.R")
# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
for (name in input) cat(greeting(name), "\n", sep = "")
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Object
1Dasar S3
Bekerja dengan fileList dengan classFungsi KonstruktorMethod print dan formatValidator dan helperUlasan: Suhu4Enkapsulasi di R
Closure sebagai objectEnvironment sebagai objectFungsi accessorMelindungi stateRangkuman: Meter Parkir2S3 Generics dan Method
Generics dan UseMethodMethod DefaultMethod untuk Base GenericsDasar-Dasar NextMethodRekap: Luas Bangun5S4 class
Mendefinisikan class S4Slots dan AksesPemeriksaan ValiditasMethod showRingkasan: Katalog Produk8Kelas Referensi
Mendefinisikan Kelas ReferensiPembaruan method dan fieldSemantik PenyalinanPewarisan dan callSuperRangkuman: Antrean Tugas11Proyek: Manajemen Perpustakaan
Buku dan AnggotaMeminjam BukuLatihan sendiri: Compiler R online