30 R Markdown iş akışı

Daha önce, konsolda’da yani etkileşimli olarak çalıştığınız yerden R kodunuzu alma ve ardından işe yarayan şeyleri betik düzenleyicisinde tutmayı anlatan bir iş akışını tartıştık. R Markdown, konsolu ve betik düzenleyicisini bir araya getirerek etkileşimli keşif ve uzun vadeli kod tutma arasındaki çizgileri bulanıklaştırıyor. Bir kod parçası içinde hızlıca yineleme yaparak, düzenleyerek ve Cmd/Ctrl + Shift + Enter yeniden çalıştırabilirsiniz. Mutlu olduğunuzda, devam eder ve yeni bir yığın başlatırsınız.

R Markdown düz yazı ve kodu sıkı bir şekilde birleştirdiği için de önemlidir. Bu onu çok iyi bir analiz defteri haline getiriyor çünkü kodu geliştirmenizin yanında düşüncelerinizi saklamanızı da sağlıyor. Bir analiz defteri fen bilimlerdeki klasik laboratuvar defteri ile aynı hedefleri paylaşır.

  • Ne yaptığınızı ve neden yaptığınızı kaydeder. Hafızanız ne kadar iyi olursa olsun eğer yaptıklarınızı kaydetmezseniz bir zaman gelir ve önemli bir detayı unutabilirsiniz. Bunları yazarsanız unutmazsınız.

  • Dikkatli düşünmeyi destekler. Eğer ilerledikçe düşündüklerinizi kaydeder ve onlar üzerine kafa yorarsanız daha güçlü bir analiz yapmanız daha olasıdır. Bu sizi analizinizi başkalarıyla paylaşma zamanı geldiğinde her şeyi yazma zahmetinden de kurtarır.

  • Başkalarına sizin çalışmanızı anlamada yardımcı olur. Bir veri analizini tek başınıza yapmanız nadirdir ve çoğunlukla başkalarıyla ekip olarak çalışırsınız. Lab defteri yalnızca sizin ne yaptığınızı başkalarıyla paylaşmanın yanında neden yaptığınızı da paylaşır.

Lab defterini verimli şekilde kullanma konusunda verilen bir çok tavsiye, analiz defteri tutmak için uyarlanabilir. Ben kendi deneyimlerimden ve Colin Purrington’ın lab defteri üzerine tavsiyelerinden (http://colinpurrington.com/tips/lab-notebooks) yararlanarak şu ipuçlarını buldum:

  • Her defterin tanımlayıcı bir başlığı, hatırlatıcı bir dosya ismine ve analizin amacını anlatan bir paragrafa sahip olduğuna emin olun.

  • Defter üzerinde çalışmaya başladığınız tarihi kaydetmek için YAML başlığı alanını kullanın.

    date: 2016-08-23

    ISO8601 YYYY-MM-DD formatını kullanın ki belirsizlik olmasın. Eğer normalde tarihleri bu şekilde kullanmıyorsanız bile bunu kullanın.

  • Bir analiz fikrine çok zaman harcarsanız ve çıkmaza girerse, onu silmeyin! Neden başarısız olduğuna dair kısa bir not yazın ve not defterine bırakın. Bu, gelecekte analize geri döndüğünüzde sizi çıkmaza girmekten koruyacaktır.

  • Veri girişini genellikle R dışında yapmanız daha iyi olur. Ancak küçük bir veri parçacığı kaydetmeniz gerekiyorsa bunu ‘tibble::tribble()’ kullanarak net bir şekilde düzenleyin.

  • Eğer bir veri dosyasında hata bulursanız, onu asla doğrudan değiştirmeyin, bunun yerine değeri düzeltmek için kod yazın. Düzeltmeyi neden yaptığınızı açıklayın.

  • Günü bitirmeden önce, not defterini örebildiğinizden emin olun (önbelleğe alma kullanıyorsanız, önbellekleri temizlediğinizden emin olun). Bu, kod hala zihninizde tazeyken herhangi bir sorunu çözmenize izin verecektir.

  • Kodunuzun uzun vadede tekrarlanabilir olmasını istiyorsanız (mesela, gelecek ay veya yıl yeniden çalıştırmak için geri dönebilirsiniz), kodunuzun kullandığı paketlerin sürümlerini takip etmeniz gerekir. Paketleri proje dizininizde saklayan packrat, http://rstudio.github.io/packrat/ veya belirlenmiş tarihte var olan paketleri yeniden yükleyecek olan checkpoint, https://github.com/RevolutionAnalytics/checkpoint> kullanmak titiz bir yaklaşımdır. Acele bir hack ise “sessionInfo()” çalıştıran bir yığın eklemektir — bu, paketlerinizi bugün olduğu gibi kolayca yeniden oluşturmanıza izin vermez, ama en azından ne olduklarını bilirsiniz.

  • Kariyeriniz boyunca çok, çok, çok sayıda analiz defteri oluşturacaksınız. Onları gelecekte tekrar bulabilmek için nasıl organize edeceksiniz? Bunları ayrı projelerde saklamanızı ve iyi bir adlandırma şeması bulmanızı öneririm.