Dosyalarla Çalışma
Coddy'nin R Journey'sinin Nesne Tabanlı Programlama bölümünün bir parçası. Ders 1 / 57.
Gerçek programlar birkaç dosyaya bölünür. R'de source("Greeting.R") başka bir dosyayı baştan sona çalıştırır ve bu dosyanın tanımladığı her işlev daha sonra kullanılabilir:
# Greeting.R
greeting <- function(name) {
paste0("Hello, ", name, "!")
}
# main.R
source("Greeting.R")
cat(greeting("Ada"), "\n")main.R çalıştırıldığında Hello, Ada! yazdırılır: source() satırı, main.R dosyası onu çağırmadan önce greeting() işlevini yükler.
Program, çalıştırdığınız dosyada (burada main.R) başlar ve R bu dosyayı satır satır okur. Sıra önemlidir: bir işlev, onu tanımlayan dosya kaynak olarak alındıktan sonra var olur; bu nedenle source() satırları en üstte yer alır:
# main.R
cat(greeting("Ada"), "\n") # Hata: "greeting" fonksiyonu bulunamadı
source("Greeting.R")
cat(greeting("Ada"), "\n") # çalışıyor: greeting() artık mevcutGenellikle düzen, her dosyada sınıfın adını taşıyan bir sınıf olacak şekildedir: Account.R, account yapıcısını ve yöntemlerini; Shape.R ise shape generic'lerini içerir. Bu bölümdeki görevlerde kodunuz bu dosyalara yazılır ve main.R, üst kısmında doğru sırada hazır olarak bulunan source() satırlarıyla birlikte sağlanan girdi/çıktı kodunu içerir. Düzenleyici her dosyayı bir sekme olarak gösterir.
Shape.R # her şekil tarafından paylaşılan jenerikler: önce source edin
Circle.R # daire sınıfı ve metotları
main.R # source("Shape.R"); source("Circle.R"); girdi okur, sonuçları yazdırırsource(), bir dosyayı global ortamda çalıştırır; bu nedenle dosyanın işlevleri ve değişkenleri global adlara dönüşür. R'de dosyaya özel adlar yoktur: iki dosya helper() tanımlarsa, en son kaynak olarak alınan dosya kazanır. Kaynak olarak alınan bir dosyada kendi satırında bulunan bir değer de yazdırılmaz; bu nedenle bir şey göstermesi gereken dosyalar cat() çağırır:
# Tools.R
total <- 0 # source edildiğinde global bir değişken
42 # source() tarafından yazdırılmaz
helper <- function(x) x * 2
# Other.R
helper <- function(x) x + 1 # daha sonra source edilir: yukarıdaki helper'ı değiştirirGörev
KolayProgramın iki dosyası vardır. main.R, Greeting.R dosyasını kaynak olarak kullanır, adları okur ve her biri için greeting(name) sonucunu yazdırır. Greeting.R içindeki greeting() işlevini tamamlayarak Ada adı için Hello, Ada! döndürmesini, ad boş olduğunda ise Hello, friend! döndürmesini sağlayın.
Kodunuz Greeting.R dosyasına yazılmalıdır. main.R sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
source("Greeting.R")
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
for (name in input) cat(greeting(name), "\n", sep = "")
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Tabanlı Programlama bölümündeki tüm dersler
1S3 Temelleri
Dosyalarla ÇalışmaSınıf ile ListelerYapıcı FonksiyonlarPrint ve Format MetotlarıDoğrulayıcılar ve YardımcılarTekrar - Sıcaklıklar4R'da Kapsülleme
Nesne Olarak Closure'larNesne Olarak OrtamlarErişimci FonksiyonlarDurumu KorumaÖzet - Parkmetre2S3 Generic'leri ve Metotları
Generic'ler ve UseMethodVarsayılan MetotlarTemel Generic'ler için MetotlarNextMethod TemelleriTekrar - Şekil Alanları5S4 Sınıfları
S4 Sınıflarını TanımlamaSlotlar ve ErişimGeçerlilik KontrolleriShow MetotlarıÖzet - Ürün Kataloğu8Referans Sınıfları
Referans Sınıflarını TanımlamaMetotlar ve Alan GüncellemeleriKopyalama SemantiğiKalıtım ve callSuperÖzet - Görev Kuyruğu11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç AlmaKendi başına pratik yap: Online R derleyicisi