Kurs
Bu yazıda her R kullanıcısının bilmesi gereken temel ve kullanışlı bir veri bilimi paketini inceleyeceğiz—R Markdown. R Markdown nedir, ne gibi avantajlar sunar, ne için kullanılır, nasıl kurulur, kod, anlatı ve veri görselleştirmeleriyle çalışmak için hangi olanakları sağlar, hangi sözdizimini kullanır, R Markdown belgeleri için çıkış biçimleri nelerdir ve bu tür belgeleri nasıl işler (render) ve işbirlikçilerimizle nasıl paylaşırız, bunları öğreneceğiz.
R Markdown özellikle RStudio tümleşik geliştirme ortamına (IDE) uyumlu olduğundan, bu yazı boyunca bu IDE’yi kullanacağız. RStudio Eğitimi, RStudio’nun nasıl kurulacağı ve kullanılmaya nasıl başlanacağı konusunda gerekli yönlendirmeyi sağlar.
Haydi başlayalım!
R Markdown Nedir?
R Markdown, veri bilimi projeleri oluşturmak için bir çalışma alanı sağlayan, ücretsiz ve açık kaynaklı bir R paketidir. R Markdown’ın en büyük avantajı; kodu, metni ve veri görselleştirmelerini tek bir cilalı, paylaşılabilir ve tamamen çoğaltılabilir belgede birleştirmenize olanak tanımasıdır. Üstelik bu belge hem statik hem de etkileşimli olmak üzere çok çeşitli çıkış biçimlerinde işlenebilir.
Popüler çıkış biçimlerinden bazıları HTML, PDF, Microsoft Word, sunumlar, uygulamalar, web siteleri, panolar, raporlar, şablonlar, makaleler, kitaplar vb.dir.
Buna ek olarak, R Markdown sürüm kontrolünü kolayca izlemenize imkân tanır ve R’nin yanı sıra Python ve SQL dâhil birçok programlama dilini destekler.
R Markdown ile dinamik raporlar oluşturmayı daha derinlemesine incelemek isterseniz, R Markdown ile Raporlama kursu iyi bir başlangıçtır.
R Markdown’ın Kurulumu
RStudio dışında R Markdown kullanırken, onu CRAN (Comprehensive R Archive Network) deposundan diğer R paketleriyle aynı şekilde kurarız:
install.packages("rmarkdown")
Kurulumdan sonra, paketi çalışma R ortamına yüklememiz gerekir:
library(rmarkdown)
Buna karşılık, R Markdown’ı RStudio içinde kullanırken—ki bu eğitim boyunca böyle yapacağız—rmarkdown paketini açıkça kurmamız ve yüklememiz gerekmez. RStudio menü çubuğunda File—New File—R Markdown’a tıkladığımızda yeni bir R Markdown belgesi açılır. Bu aşamada aşağıdaki gibi Install Required Packages bildirimi alabiliriz:

Gerekli paket kurulumunu onayladıktan sonra açılan yeni açılır pencerede bir belge başlığı ve yazar adı (her ikisi de isteğe bağlı ama önerilir) girer, diğer ayarları olduğu gibi bırakır ve Tamam’a basarız:

Varsayılan R Markdown Belgesi
Önceki bölümde RStudio’da yeni bir R Markdown belgesi açtık. Şu şekilde görünür:

Açarken açılır pencerede verdiğimiz başlığı, yazar adını, mevcut tarihi ve varsayılan çıkış biçimini içerdiğini görüyoruz. Ardından, R Markdown’ın kullandığı temel sözdizimine ilişkin bazı örnekler var: kod blokları ekleme ve biçimlendirme, başlık ekleme, bağlantı yerleştirme, metni vurgulama ve grafik üretme gibi.
Şimdi R Markdown’ın çeşitli işlevlerine ve bunların sözdizimine daha ayrıntılı bakacağız. Şimdilik, bu varsayılan dosyayı kaydedip seçili çıkış biçiminde (bizim durumumuzda—HTML) işleyerek nasıl göründüğüne bakalım.
Dosyayı kaydetmek için RStudio menü çubuğunda File—Save As...’a tıklarız.
NOT: Daha önce belirlediğimiz R Markdown belgesinin adı, dosya adıyla aynı değildir. Dosyayı proje dizinine kaydetmemiz ve üzerinde çalışırken düzenli aralıklarla (File—Save) kaydetmemiz gerekir.
Kaydedilen dosyayı seçili çıkış biçiminde (HTML) işlemek için dosyanın araç çubuğundaki Knit düğmesine basmamız gerekir:

Varsayılan R Markdown belgemiz HTML biçiminde şöyle görünür:

R Markdown’da Metin Biçimlendirme
Çoğu zaman metin, bir veri bilimi projesinin önemli bölümünü oluşturur. Bu nedenle, okunaklı, verimli ve etkileyici olması için R Markdown’da nasıl biçimlendirileceğini bilmek önemlidir.
R’yi veri analizi ve veri bilimi için nasıl kullanacağınızı öğrenmek ve hem R programlama hem de veri bilimi becerilerinizi geliştirmek istiyorsanız, aşağıdaki, yeni başlayanlara uygun ve kapsamlı kariyer patikalarını değerlendirin:
Başlıklar
R Markdown belgemize farklı düzeylerde başlıklar eklemek için diyez (#) sembolünü kullanabiliriz. Sözdizimi şöyledir:
# Başlık 1 (ana başlık)
## Başlık 2 (bölüm)
### Başlık 3 (alt bölüm)
vb.
İşlendiğinde yukarıdaki başlıklar şu şekilde görünür:

Metin Vurgulama
R Markdown, metne italik, kalın, üstü çizili, üst simge veya alt simge gibi farklı vurgu türleri eklemeye imkân tanır:
- *italik* veya _italik_
- **kalın** veya __kalın__
- ~~üstü çizili~~
- metin^üstsimge^
- metin~altsimge~
Aşağıda bu vurgu türlerinin işlenmiş hâli yer alıyor:

Listeler
Sırasız liste oluşturmak için aşağıdaki üç sözdiziminden birini kullanırız:
* Öğe 1* Öğe 2* Öğe 3
veya:
- Öğe 1- Öğe 2- Öğe 3
veya:
+ Öğe 1+ Öğe 2+ Öğe 3
Tüm durumlarda işlenen sonuç aynı olur:

Sıralı liste oluşturmak için şu sözdizimini kullanırız:
1. Öğe 12. Öğe 23. Öğe 3
İşlenen sonuç benzer görünür, yalnızca her sayının önüne bir girinti eklenir.
Dikkat edin: Sıralı bir listeden bir öğeyi siler, yeni bir öğe ekler veya sayıların birinde hata yaparsak (örnekte 2. yerine 20. yazmak gibi), sayılar otomatik olarak düzeltilir ve olması gerektiği gibi gösterilir:

Blok Alıntılar
Blok alıntılar için, alıntılanacak metnin ilk karakterinden önce > sembolünü kullanırız:
> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam hendrerit nisi sed sollicitudin pellentesque. Nunc posuere purus rhoncus pulvinar aliquam. Ut aliquet tristique nisl vitae volutpat. Nulla aliquet porttitor venenatis. Donec a dui et dui fringilla consectetur id nec massa. Aliquam erat volutpat. Sed ut dui ut lacus dictum fermentum vel tincidunt neque.
Bu şu şekilde işlenecektir:

Alıntılanan bir bloktan çıkmak için sonrasında boş bir satır ekleriz.n unordered list of 3 items
Bağlantılar
Bir bağlantıyı doğrudan yol olarak eklemek istersek, bağlantı yolunu < ve > sembolleri arasına koymamız gerekir. Örneğin, aşağıdaki yapı:
şu şekilde işlenecektir:
Bunun yerine bir bağlantıyı bir sözcüğe veya kısa bir metne sabitlemek için (yine Google web sitesini örnek alarak) şu sözdizimini kullanırız:
[Google](https://www.google.com/)
Bu şu şekilde işlenecektir:
Görseller
Anlatımıza bir görsel eklemek için aşağıdaki yaklaşımlardan birini kullanırız:
- Görseli internetten eklemek istersek:

- Görsel dosyası R Markdown belgemizin kaydedildiği proje klasöründe kayıtlıysa:

- Görsel dosyası bilgisayarımızda ancak proje klasörü dışında kayıtlıysa:

Alt metin, görselde ne olduğuna dair kısa bilgi sağlar ve kullanıcı herhangi bir nedenle sayfadaki görseli göremediğinde devreye girer.
İlk yaklaşımı, görsel URL’si https://cdn.pixabay.com/photo/2018/12/02/10/07/web-3850917_1280.jpg olan bir Pixabay görseli için uygulayalım:

Belgeyi işlediğimizde görsel görüntülenir:

Kesmeler
R Markdown’da çeşitli kesme türleri vardır:
- Satır sonu—yeni bir satıra başlamak için. Önceki satırı ters bölü (\) ile bitirerek uygulanır.
- Paragraf sonu—yeni bir paragrafa başlamak için. Önceki paragrafı iki boşlukla bitirerek uygulanır.
- Slayt kesmesi—slayt tabanlı çıkış biçimlerinde (sunumlar) yeni bir slayta veya diğer tüm biçimlerde yeni bir bölüme başlamak için. Belgeye yatay bir kural (***) eklenerek uygulanır.
- Sayfa sonu—uygulanabildiği çıkış biçimlerinde (ör. Microsoft Word) yeni bir sayfaya başlamak için. Belgeye \newpage komutu eklenerek uygulanır.
Şimdi ilk üç kesme türünü uygulayalım. Aşağıda, bazı R Markdown kesme biçimlendirme sembolleri eklenmiş bir Lorem ipsum metni parçası var:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.\Nam hendrerit nisi sed sollicitudin pellentesque.
Nunc posuere purus rhoncus pulvinar aliquam.
***
Ut aliquet tristique nisl vitae volutpat.
HTML belgede işlenmiş hâli şöyledir:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.Nam hendrerit nisi sed sollicitudin pellentesque.
Nunc posuere purus rhoncus pulvinar aliquam.
Ut aliquet tristique nisl vitae volutpat.
R Markdown’da Kod Biçimlendirme ve Çalıştırma
Kod, her veri bilimi projesinin bir diğer temel bileşenidir. R Markdown’da kod çalıştırabilir (yalnızca R dilinde değil), hem kodu hem de çıktısını gösterebilir, yalnızca kodu gösterip çıktısını gizleyebilir, yalnızca çıktıyı gösterip kaynak kodu gizleyebilir vb.
Yeni başlayanlara uygun R Programcısı kariyer patikası ve R Programlama beceri patikası, R kodlama becerilerinizi öğrenmek, pratik yapmak ve geliştirmek için yararlı kaynaklardır.
Kod Blokları
R Markdown’da bir R kod bloğunu biçimlendirmek ve çalıştırmak için, onu üçlü ters tırnak çiftinin arasına alırız; ilk üçlü ters tırnaklardan sonra süslü parantez içinde r yazarız. Örneğin:
```{r}
print("Hello, World!")
```
Kodu çalıştırmadan belgemizi işlersek, kod bloğumuz aşağıdaki gibi görünür:

Kod Dili
R Markdown ile çalışırken yalnızca R kullanmakla sınırlı değiliz; paket birçok başka programlama dilini de destekler. Başka bir dilde kod çalıştırmak için, süslü parantezlerde R yerine o dilin adını yazarız. Bunun yanı sıra, çalışma R ortamında bazı ek paketleri kurup yüklememiz gerekebilir.
Örneğin, R Markdown’da Python kullanabilmek için, aynı R Markdown belgesinde Python ve R arasında (değişken oluşturma ve erişim gibi) çift yönlü iletişim sağlayan reticulate paketini kurup yüklememiz gerekir.
Önceki bölümdeki kod parçasını (reticulate paketini kurup yükledikten sonra) Python ile yeniden yazalım:
```{python}
print("Hello, World!")
```

Kod Bloğu Çalıştırma
RStudio içinde R Markdown ile çalışırken bir kod bloğunu veya seçili satırlarını çalıştırmak için, belgenin araç çubuğundaki Run düğmesine tıklayıp açılır listeden gerekli seçeneği belirleriz:

Yukarıdaki görselde, her çalıştırma seçeneğinin açılır listeyi her seferinde açmak yerine kullanabileceğimiz bir kısayolu olduğunu görüyoruz.
Kod Bloku Adlandırma
Zorunlu olmamakla birlikte, kod bloklarını adlandırmak iyi bir uygulamadır. Belge boyunca kod bloklarına referans vermek, hata ayıklamak, bloklar arasında geçiş yapmak gibi birçok durumda faydalıdır. Özellikle çok sayıda kod bloğu içeren uzun bir belgeyle çalışıyorsak kod bloklarını adlandırmak daha da önemli hâle gelir.
Bir kod bloğunun adını, dil adından hemen sonra süslü parantezler içinde ve bir boşlukla ayırarak ekleriz. Kod bloğu adı boşluk içeremez.
Aşağıdaki örnekte bloğa hello_world adını ekledik:
```{r hello_world}
print("Hello, World!")
```
Kod Bloğu Seçenekleri
Kod bloğu seçenekleri, her bir kod bloğu için kodun değerlendirilmesi, çıktı, süsleme, önbellek, animasyon (varsa) ve grafikler (varsa) üzerinde kontrol sahibi olmamızı sağlar. Aynı kod bloğuna birden fazla seçenek ekleyebiliriz. Sözdizimi olarak, seçenekleri adın (varsa; yoksa dil adının) hemen ardından süslü parantez içine, ondan ve birbirlerinden virgülle ayırarak yazarız.
R Markdown’da birçok blok seçeneği mevcuttur. Her birinin bir varsayılan değeri vardır; ancak onları kullanmaya karar verdiğimizde çoğunlukla varsayılandan farklı bir değer isteriz. En popüler blok seçeneklerine ve ilgimizi çekebilecek değerlerine bakalım:
echo=FALSE—kodun kendisi nihai belgede gösterilmez, yalnızca çıktıları gösterilir.eval=FALSE—kod bloğundaki kod çalıştırılmaz.include=FALSE—kod bloğu çalıştırılır ancak nihai belgeye dâhil edilmez.results—varsayılan değer "markup"tur; diğer değerler:- "hide"—kod çıktısı nihai belgede gizlenir
- "hold"—kod çıktısı, yalnızca tüm kod bloğu çalıştırıldıktan sonra gecikmeli olarak gösterilir
- "asis"—kod çıktısı yeniden biçimlendirilmeden aynen geçirilir.
message=FALSE—kodun ürettiği iletiler gösterilmez.error=FALSE—kodun ürettiği hatalar gösterilmez.warning=FALSE—kodun ürettiği uyarılar gösterilmez.highlight=FALSE—kod nihai belgede renklendirilmez.prompt=TRUE—nihai belgede gösterilen her kod satırının başına > sembolü eklenir.
Aşağıda, önce RStudio’da R Markdown içinde çalıştırılıp sonra nihai belgede işlenmiş bazı kod bloğu örnekleri yer alıyor:
R Markdown’daki kod:

Nihai belgedeki çıktı:

Satır İçi Kod
Satır içi kod ile, kısa kod parçalarını doğrudan R Markdown belgemizin metnine ekleyebiliriz—çalıştırılırlar ve çıktıları metne gömülü olarak gösterilir. Satır içi kodun sözdizimi r <code> şeklindedir.
Aşağıda satır içi kod içeren basit bir metin örneği var:
Gökkuşağında `r 1+6` renk vardır.
ve nihai belgede nasıl işlendiği:
Gökkuşağında 7 renk vardır.
Uygulamada satır içi kod, veriye ilişkin bilgileri özetlemek için kullanılır ve sayıları elle eklediğimizde veya veriler değiştiğinde kolayca yaşanabilecek hataları önlemeye yardımcı olur.
R Markdown’da Grafikleme
R Markdown’da grafikleme, grafik üreten kodların çalıştırılmasını gerektirir. Dolayısıyla, satır içi kod dışında, şimdiye kadar R Markdown’da kod biçimlendirme ve çalıştırma hakkında konuştuğumuz her şey grafikleme için de geçerlidir. Temel fark, böyle bir kodun çıktısının yalnızca metin ve sayılar değil, grafikler olmasıdır.
R ile Veri Görselleştirme beceri patikası, R’de veri analizi ve görselleştirme becerilerini geliştirmenize ve böylece daha iyi veri odaklı hikâyeler anlatmanıza yardımcı olacaktır.
R Markdown’da grafikleri özelleştirmek için, tıpkı normal R’de olduğu gibi, R veri görselleştirme paketlerinin araçlarını ve base R’nin plot() fonksiyonunu kullanırız.
Bununla birlikte, bir R Markdown belgesinde grafikleme davranışını kontrol etmek için yalnızca grafiklemeyle ilgili blok seçeneklerinden yararlanabiliriz. Bunların çoğu oldukça özeldir ve bu “başlangıç” eğitiminin kapsamı dışındadır. Bu nedenle, R Markdown’da grafiklerken faydalı olabilecek bazı temel blok seçeneklerine göz atalım:
fig.show—varsayılan değer "asis"tir; diğer değerler:- "hide"—grafikler oluşturulur ancak nihai belgeye dâhil edilmez
- "hold"—grafikler, yalnızca tüm kod bloğu çalıştırıldıktan sonra gecikmeli olarak gösterilir
- "animate"—kod bloğundaki tüm grafikler bir animasyonda birleştirilir.
fig.width—grafiğin inç cinsinden genişliği, varsayılan 7’dir.fig.height—grafiğin inç cinsinden yüksekliği, varsayılan 7’dir.fig.align—grafiklerin nihai belgede hizalanma şekli; "left", "center" veya "right" olabilir.fig.cap—karakter dizisi olarak bir şekil başlığı.fig.path—kod bloğunun oluşturduğu grafik dosyalarının saklanacağı dizinin yolu.fig.ext—kod bloğunun oluşturduğu grafik dosyalarının uzantısı.
Aşağıda, R Markdown’da grafiklerken grafiklere özgü kod bloklarının kullanımına dair, kaynak kodu ve işlenmiş çıktıyı içeren bazı örnekler yer alıyor:
R Markdown’daki kod:

Nihai belgedeki çıktı:

Çıkış Biçimleri
Şimdiye kadar, nihai belge için çıkış biçimi olarak yalnızca HTML belgesini (html_document) ele aldık. Ancak R Markdown, Microsoft Word, Microsoft PowerPoint, PDF, etkileşimli R not defterleri, panolar vb. dâhil birçok başka çıkış biçimi sunar.
Örneğin, R Markdown’da belge oluşturmak için kullanılabilen çıkış biçimleri arasında html_document, pdf_document, word_document, github_document, html_notebook, html_vignette vb. bulunur. Sunum oluşturmak için ise şu çıkış biçimlerini kullanabiliriz: powerpoint_presentation, ioslides_presentation, slidy_presentation ve beamer_presentation.
R Markdown belgemiz için bir çıkış biçimi ayarlamak üzere, belge başlığındaki (YAML başlığı olarak da bilinir; YAML, “yet another markup language” ifadesinin kısaltmasıdır) output ayarına karşılık gelen değeri atarız. Örneğin, üzerinde çalıştığımız R Markdown belgesinde çıkış biçimi html_document olarak ayarlanmıştır; bu, R Markdown’daki varsayılan çıkış biçimidir:

Bunu değiştirmek için html_document yerine gerekli çıkış biçimini (pdf_document, word_document, powerpoint_presentation vb.) yazarız. Artık dosyanın araç çubuğunda Knit’e bastığımızda, belgemizi seçili çıkış biçiminde işleyeceğiz.
R Markdown Belgelerini Yayınlama
Bir R Markdown belgesini yayınlamak için RStudio menü çubuğunda File—Publish’e tıklar ve nerede yayınlamak istediğimizi seçeriz:

Ardından önceki seçimize bağlı olarak değişecek talimatları izler ve Publish’a basarız. Artık belgemiz işbirlikçilerimizle paylaşılmaya hazırdır.
Sonuç
Özetle, bu yazıda R Markdown’a nasıl başlanacağını öğrendik. Önce R Markdown’ın ne olduğunu ve ne için kullanıldığını tanımladık. Ardından R Markdown’ın nasıl kurulacağını, metni ve çeşitli bileşenlerini onunla nasıl biçimlendireceğimizi, kodu nasıl biçimlendirip çalıştıracağımızı, nasıl grafik üreteceğimizi, R Markdown’ın hangi çıkış biçimlerini sunduğunu, çalışan bir belgenin bu biçimlerden birinde nasıl işleneceğini ve nihai belgenin meslektaşlarla paylaşılmak üzere nasıl yayınlanacağını tartıştık.
R Markdown kullanarak uygulamalı pratik yapmak için, verilerden içgörüleri ortaya çıkarmanıza ve bulgularınızı PDF, HTML dosyası veya Shiny uygulaması olarak yazmanıza yardımcı olacak R Markdown ile Raporlama kursumuza göz atın.
