× Need help learning R? Enroll in Applied Epi's intro R course, try our free R tutorials, post in our Community Q&A forum, or ask about our R Help Desk service.

41 Rutin raporların düzenlenmesi

Bu sayfa, raporlar için R Markdown kullanımına eşlik eden reportfactory paketini kapsamaktadır.

Raporları rutin olarak çalıştırdığınız senaryolarda (günlük, haftalık vb.), birden çok R Markdown dosyasının derlenmesini ve çıktılarının organizasyonunu kolaylaştırır. Özünde, R Markdown raporlarını çalıştırabileceğiniz, çıktılar için otomatik olarak tarih ve zaman damgalı klasörler alabileceğiniz ve “hafif” sürüm kontrolüne sahip olabileceğiniz bir “fabrika” sağlar.

reportfactory, RECON (R Epidemics Consortium) tarafından geliştirilen paketlerden biridir. İşte onların web sitesi ve Github.

41.1 Hazırlık

Paketleri yüklemek

RStudio içinden, Github’dan reportfactory paketinin en son sürümünü yükleyin.

Bunu, Github’dan en son sürümün yüklenmesini zorlayacak olan p_load_current_gh() ile pacman paketi aracılığıyla yapabilirsiniz. Github organizasyonunu (reconverse) ve veri havuzunu (rapor fabrikası) belirten “reconverse/reportfactory” karakter dizisini sağlayın. Alternatif olarak remotes paketinden install_github() da kullanabilirsiniz.

# Paketin en son sürümünü Github'dan yükleyin ve kurun
pacman::p_load_current_gh("reconverse/reportfactory")
# remotes::install_github("reconverse/reportfactory") # alternatif yöntem

41.2 Yeni fabrika

Yeni bir fabrika oluşturmak için new_factory() fonksiyonunu çalıştırın. Bu, yeni bir bağımsız R proje klasörü oluşturacaktır. Varsayılan olarak:

  • Fabrika çalışma dizininize eklenecektir.
  • Fabrika R projesinin adı “new_factory.Rproj” olarak adlandırılacaktır.
  • RStudio oturumunuz bu R projesine “taşınacak”tır
# Bu, fabrikayı çalışma dizininde yaratacaktır.
new_factory()

Fabrikanın içine baktığınızda, alt klasörlerin ve bazı dosyaların otomatik olarak oluşturulduğunu görebilirsiniz.

  • report_sources klasörü, raporlarınızı oluşturan R Markdown komut dosyalarınızı tutacaktır.
  • outputs klasörü, rapor çıktılarını tutmak için(ör. HTML, Word, PDF, vb.)
  • scripts klasörü, diğer R komut dosyalarını depolamak için kullanılabilir (örneğin, Rmd komut dosyalarınız tarafından sağlananlar)
  • data klasörü verilerinizi tutmak için kullanılabilir (“ham” ve “temiz” alt klasörler dahildir)
  • Bir .here dosyası, böylece alt klasörlerdeki dosyaları bu kök klasörle ilişkilerine göre çağırmak için here paketini kullanabilirsiniz (ayrıntılar için R projeleri sayfasına bakabilirsiniz)
  • Bu R projesini bir Github deposuna bağlamanız durumunda bir gitignore dosyası oluşturulur (bkz. [Sürüm kontrolü ve Github ile işbirliği])
  • Github deposu kullanıyorsanız, boş bir BENİOKU dosyası oluşur.

UYARI: bilgisayarınızın ayarına bağlı olarak, “.here” gibi dosyalar var olabilir ancak görünmez olabilir.

Varsayılan ayarlardan, ‘new_factory()’ komutuyla ayarlamak isteyebileceğiniz birkaç tanesi aşağıdadır:

  • factory = - Fabrika klasörü için bir ad girin (varsayılan “new_factory”)
  • path = - Yeni fabrika için bir dosya yolu belirleyin (varsayılan çalışma dizinidir)
  • report_sources = R Markdown komut dosyalarını içeren alt klasör için alternatif bir ad sağlayın (varsayılan “report_sources”)
  • outputs = Rapor çıktılarını tutan klasör için alternatif bir ad sağlayın (varsayılan “outputs”)

Değişkenlerin tam listesi için “?new_factory” konusuna bakabilirsiniz.

Yeni fabrika oluşturduğunuzda, R oturumunuz yeni R projesine aktarılır, bu nedenle reportfactory paketini tekrar yüklemelisiniz.

pacman::p_load(reportfactory)

Artık fabrikadaki iç yapıyı (tüm klasörler ve dosyalar) görmek için factory_overview() komutunu çalıştırabilirsiniz.

factory_overview()            # fabrikaya genel bakışı konsola yazdır

Fabrika klasörlerinin ve dosyalarının aşağıdaki “ağacı” R konsoluna yazdırılır. “Veri” klasöründe “ham” ve “temiz” veriler ve örnek CSV verileri için alt klasörler bulunduğunu unutmayın. Ayrıca “report_sources” klasöründe “example_report.Rmd” vardır.

41.3 Bir rapor oluşturun

Fabrika R projesinin içinden, normalde yaptığınız gibi bir R Markdown raporu oluşturun ve bunu “report_sources” klasörüne kaydedin. Talimatlar için R Markdown sayfasına bakabilirsiniz. Örnek olması açısından, fabrikaya aşağıdakileri ekledik:

  • “report_sources” klasörüne kaydedilen “daily_sitrep.Rmd” başlıklı yeni bir R işaretleme komut dosyası
  • Rapor (“linelist_cleaned.rds”) verileri, “data” klasörü içindeki “clean” alt klasörüne kaydedilir

factory_overview() kullanarak “report_sources” klasöründeki R Markdown’ımızı ve “clean” veri klasöründeki (vurgulanan) veri dosyasını görebiliriz:

Aşağıda, R Markdown “daily_sitrep.Rmd” başlangıcının bir ekran görüntüsü bulunmaktadır. YAML başlığı “output: html_document” aracılığıyla çıktı biçiminin HTML olarak ayarlandığını görebilirsiniz.

Bu basit komut dosyasında şu komutlar vardır:

  • Gerekli paketleri yükleyin
  • here paketindeki bir dosya yolunu kullanarak satır listesi verilerini içe aktarın (daha fazlasını [İçe aktarma ve dışa aktarma] sayfasından okuyun)
linelist <- import(here("data", "clean", "linelist_cleaned.rds"))
  • Vakaların bir özet tablosunu yazdırın ve bunu bir .csv dosyası olarak export() ile dışa aktarın
  • Bir salgın eğrisi yazdırın ve ggsave() ile .png dosyası olarak dışa aktarın

Bu komutla “report_sources” klasöründeki yalnızca R Markdown raporlarının listesini inceleyebilirsiniz:

list_reports()

41.4 Derlemek (Compile)

Bir rapor fabrikasında, bir R Markdown raporunu “derlemek”, .Rmd komut dosyasının çalıştırılacağı ve çıktının üretileceği anlamına gelir (YAML komut dosyasında belirtildiği gibi, örneğin HTML, Word, PDF, vb. olarak).

Fabrika, “outputs” klasöründeki çıktılar için otomatik olarak tarih ve zaman damgalı bir klasör oluşturacaktır.

Raporun kendisi ve komut dosyası tarafından üretilen tüm dışa aktarılan dosyalar (örn. csv, png, xlsx) bu klasöre kaydedilecektir. Ek olarak, Rmd betiğinin kendisi bu klasöre kaydedilecektir, böylece betiğin o sürümünün bir kaydı olur.

Bu, çıktıları Rmd komut dosyasının konumuna kaydeden “örülmüş” bir R Markdown’ın normal davranışıyla çelişir. Bu varsayılan davranış, kalabalık, dağınık klasörlere neden olabilir. Fabrika, sık sık rapor çalıştırması gerektiğinde organizasyonu iyileştirmeyi amaçlar.

Adına göre derleyin

Belirli bir raporu ‘compile_reports()’ çalıştırarak ve Rmd komut dosyası adını (.Rmd uzantısı olmadan) ‘reports =’ olarak sağlayarak derleyebilirsiniz. Basit olması için, reports = kısmını atlayabilir ve R Markdown adını aşağıdaki gibi tırnak işaretleri içinde yazabilirsiniz.

Bu komut, yalnızca “daily_sitrep.Rmd” raporunu derleyerek, HTML raporunu ve .csv tablosunu ve .png epicurve dışa aktarmalarını, “outputs” klasörü içinde, rapora özel tarih ve zaman damgalı bir alt klasöre kaydeder.

.Rmd uzantısını sağlamayı seçerseniz, uzantıyı dosya adına kaydedilirken doğru şekilde yazmanız gerektiğini unutmayın (.rmd ve .Rmd).

Ayrıca, derlerken, “report_sources” klasöründe geçici olarak birkaç dosyanın görünebileceğini unutmayın - ancak doğru “outputs” klasörüne aktarıldıkları için kısa sürede kaybolacaklardır.

Numarasına göre derleyin

Ayrıca, reports = için bir sayı veya sayı vektörü sağlayarak derlenecek Rmd betiğini de belirtebilirsiniz. Rakamlar, list_reports() çalıştırdığınızda raporların göründüğü sıraya göre hizalanmalıdır.

# İkinci ve dördüncü Rmds'yi "report_sources" klasöründe derleyin
compile_reports(reports = c(2, 4))

Tümünü Derleyin

“report_sources” klasöründeki tüm R Markdown raporlarını, reports = değişkenini TRUE olarak ayarlayarak derleyebilirsiniz.

Alt klasöründen derleyin

“report_sources” klasörüne alt klasörler ekleyebilirsiniz. Bir alt klasörden R Markdown raporu çalıştırmak için, klasörün adını subfolder = olarak sağlamanız yeterlidir. Aşağıda, “report_sources” alt_klasöründe yaşayan bir Rmd raporunu derlemek için bir kod örneği verilmiştir.

compile_reports(
     reports = "summary_for_partners.Rmd",
     subfolder = "for_partners")

Aşağıdaki gibi sonunda bir eğik çizgi ile reports = alt klasör adını sağlayarak bir alt klasör içindeki tüm Rmd raporlarını derleyebilirsiniz.

compile_reports(reports = "for_partners/")

Parametrelendirme

R Markdown ile Raporlar sayfasında belirtildiği gibi, belirtilen parametrelerle raporlar çalıştırabilirsiniz. Bu parametreleri, ‘params =’ değişkeni aracılığıyla ‘compile_reports()’ öğesine bir liste olarak iletebilirsiniz. Örneğin, bu kurgusal raporda, R Markdown raporlarına sağlanan üç parametre vardır.

compile_reports(
  reports = "daily_sitrep.Rmd",
  params = list(most_recent_data = TRUE,
                region = "NORTHERN",
                rates_denominator = 10000),
  subfolder = "regional"
)

“Çalışma dosyası” kullanma

Çalıştırılacak birden fazla raporunuz varsa, tüm ‘compile_reports()’ komutlarını içeren bir R betiği oluşturmayı düşünün. Bir kullanıcı bu R betiğindeki tüm komutları basitçe çalıştırabilir ve tüm raporlar derlenecektir. Bu “run-file” dosyasını “scripts” klasörüne kaydedebilirsiniz.

41.5 Çıktılar

Raporları birkaç kez derledikten sonra, “outputs” klasörü şöyle görünebilir (açıklık için vurgular eklendi):

  • “Outputs” içerisinde her bir Rmd raporu için alt klasörler oluşturulmuştur.
  • Bunların içinde, her benzersiz derleme için başka alt klasörler oluşturulmuştur.
    • Bunlar tarih ve zaman damgalıdır (“2021-04-23_T11-07-36”, 23 Nisan 2021, 11:07:36 anlamına gelir)
    • Tarih/zaman damgası biçimini düzenleyebilirsiniz. ?compile_reports konusuna bakabilirsiniz.
  • Her bir tarih/saat derlenmiş klasöründe, rapor çıktısı (ör. HTML, PDF, Word) Rmd betiği (sürüm kontrolü!) ve dışa aktarılan diğer dosyalar (ör. table.csv, epidemi_curve.png) ile birlikte depolanır.

“daily_sitrep” raporu için tarih/saat damgalı klasörlerden birinin içindeki bir görünüm buradadır. Dosya yolu, vurgu için sarı renkle vurgulanmıştır.

Son olarak, aşağıda HTML rapor çıktısının bir ekran görüntüsü bulunmaktadır.

Çıktıların listesini gözden geçirmek için list_outputs() kullanabilirsiniz.

41.6 Muhtelif İçerikler

Knit

İsterseniz “knit” düğmesine basarak R Markdown raporlarınızdan birini hala “örebilirsiniz”. Bunu yaparsanız, varsayılan olarak, çıktılar Rmd’nin kaydedildiği klasörde - “report_sources” klasöründe görünecektir. reportfactory’nin önceki sürümlerinde, “report_sources” içinde Rmd olmayan dosyaların bulunması derlemeyi engellerdi, ancak artık durum böyle değil. compile_reports() komutunu çalıştırabilirsiniz ve herhangi bir hata oluşmaz.

Betikler

.Rmd komut dosyalarınız tarafından sağlanan “runfiles” veya .R komut dosyalarını depolamak için “scripts” klasörünü kullanmanızı öneririz. Kodunuzu birkaç dosyada nasıl yapılandıracağınıza ilişkin ipuçları için R Markdown hakkındaki sayfaya bakabilirsiniz.

Ekstralar

  • reportfactory ile, tüm fabrikadaki tüm raporlarda gerekli tüm paketleri listelemek için ‘list_deps()’ fonksiyonunu kullanabilirsiniz.

  • Geliştirme aşamasında, raporların oluşturulmasında size yardımcı olacak daha fazla yardımcı fonksiyon sunan rfextras adlı bir paket vardır, örneğin:

    • load_scripts() - belirli bir klasördeki tüm .R komut dosyalarını kaynaklar/yükler (varsayılan olarak “scripts” klasörü)
    • find_latest() - bir dosyanın en son sürümünü bulur (örneğin, en son veri kümesi)

41.7 Kaynaklar

reportfactory paketleri Github sayfası

rfextras paketleri Github sayfası