R Markdown, Knitr, Pandoc ve Bookdown arasındaki ilişki


93

R Markdown, Knitr, Pandoc ve Bookdown'ın işlevselliği arasındaki ilişki nedir?

Gömülü R kodu (ör. .RnwVeya .Rmd) içeren biçimlendirme belgelerini nihai çıktılara (ör. .pdfVeya .html) dönüştürmede bu paketler arasındaki 'iş bölümü' özellikle nedir ? RMarkdown'u işlemek için Knitr kullanılıyorsa, rmarkdownpaket ne işe yarar ve paketin paketinden farkı markdown packagenedir?

Yanıtlar:


142

Pandoc

Pandoc bir belge dönüştürücüsüdür. Bir dizi farklı biçimlendirme biçimini .doc, .pdfvb. Gibi diğer birçok biçime dönüştürebilir .

Pandoc, GUI içermeyen bir komut satırı aracıdır. R'den ayrı bağımsız bir yazılım parçasıdır. Bununla birlikte, R Studio ile birlikte gelir çünkü rmarkdownbelge dönüştürme için ona güvenir.

Pandoc yalnızca belgeleri dönüştürmekle kalmaz, aynı zamanda daha karmaşık çıktıları desteklemesini sağlamak için temel işaretleme dilinin üzerine işlevsellik de ekler.

R Markdown

R Markdown, indirime dayanır:

Markdown (biçimlendirme dili)

Markdown, HTML'ye ve diğer birçok biçime dönüştürülebilmesi için tasarlanmış düz metin biçimlendirme sözdizimine sahip hafif bir biçimlendirme dilidir. Bir markdown dosyası, genellikle uzantı verilen bir düz metin dosyasıdır .md.

HTML ve Lateks gibi diğer biçimlendirme dilleri gibi, R'den tamamen bağımsızdır.

Açıkça tanımlanmış bir Markdown standardı yoktur. Bu, farklı satıcılar kusurları düzeltmek veya eksik özellikleri eklemek için dilin kendi varyantlarını yazdıkça parçalanmaya yol açtı.

Markdown (R paketi)

markdown.Rmddosyaları HTML'ye dönüştüren bir R paketidir . Çok rmarkdowndaha fazla işlevsellik sunan öncülüdür . Artık kullanılması tavsiye edilmemektedir.

R Markdown (biçimlendirme dili)

R Markdown, markdown sözdiziminin bir uzantısıdır. R Markdown dosyaları, genellikle dosya uzantısına sahip düz metin dosyalarıdır..Rmd . R kodunun daha sonra yürütülebilecek şekilde içlerine gömülmesini sağlayan bir markdown sözdizimi uzantısı kullanılarak yazılırlar.

rmarkdownPaket tarafından işlenmeleri beklendiğinden , bir R markdown dosyasının bir parçası olarak Pandoc markdown sözdizimini kullanmak mümkündür . Bu, ham HTML / Lateks ve tablolar gibi ek işlevler sağlayan orijinal markdown sözdiziminin bir uzantısıdır.

R Markdown (paket)

R paketi rmarkdown, .Rmddosyaları işleyen ve bir dizi farklı biçime dönüştüren bir kitaplıktır .

Çekirdek fonksiyonu rmarkdown::renderolan Pandoc omuzları üzerinde duruyor . Bu işlev ', girdi dosyasını pandoc kullanarak belirtilen çıktı biçimine dönüştürür. Giriş örgü gerektiriyorsaknitr::knit , pandoc'tan önce çağrılır.

RMarkdown paketinin amacı, Pandoc seçeneklerini özelleştirmek için makul derecede iyi varsayılanlar ve R dostu bir arayüz sağlamaktır. .

RMarkdown dosyalarının en üstünde görülen YAML meta verileri rmarkdown::render, oluşturma sürecine rehberlik etmek için özellikle seçenekleri iletmek içindir .

RMarkdown'un yalnızca markdown sözdizimi ile ilgilendiğini unutmayın. Bir .Rhtmlveya bir .Rnwdosyayı dönüştürmek istiyorsanız , içinde yerleşik Knitrolarak bulunan knitr::knit2htmlve aşağıdaki gibi kolaylık işlevlerini kullanmalısınız.knitr:knit2pdf

Knitr

Knitr, gömülü kod içeren bir düz metin belgesini alır, kodu yürütür ve sonuçları belgeye "örer".

Örneğin, dönüştürür

Temel işlev knitr::knitve varsayılan olarak bu, girdi belgesine bakacak ve ne tür olduğunu tahmin etmeye çalışacaktır - Rnw, Rmd vb.

Bu temel işlev, üç rol gerçekleştirir: - Girdi belgesine bakan ve hangi parçaların kullanıcının değerlendirilmek istediği kod olduğunu algılayan bir kaynak ayrıştırıcı. - Bu kodu değerlendiren bir kod değerlendiricisi - Değerlendirmenin sonuçlarını belgeye ham çıktı türü tarafından yorumlanabilen bir biçimde geri yazan bir çıktı oluşturucu. Örneğin, girdi dosyası bir .Rmdise, çıktı işleme .mdbiçimi kod değerlendirmesinin çıktısını işaretler .

Belge formatları arasında dönüştürme

Knitr yok değil belge formatları arasında dönüştürme - Böyle bir dönüştürme olarak .mdbir içine .html. Bununla birlikte, bunu yapmak için diğer kitaplıkları kullanmanıza yardımcı olacak bazı kolaylık işlevleri sağlar. Paketi kullanıyorsanız, rmarkdownbu işlevi görmezden gelmelisiniz çünkü onun yerini almıştır rmarkdown::render.

Bir örnek şudur knitr:knit2pdf: 'Giriş Rnw veya Rrst belgesini örün ve texi2pdf veya rst2pdf kullanarak PDF'ye derleyin'.

Karışıklık bir potansiyel kaynağıdır knitr::knit2htmlki, "örme giriş markdown kaynağı ve çağrısına bir kolaylık işlevidir markdown::markdownToHTMLHTML sonucu dönüştürmek." Bu artık eski işlevselliktir çünkü markdownpaketin yerini rmarkdownpaket almıştır. Bu nota bakın .

Bookdown

Bookdown paketi, R Markdown üzerine inşa edilmiştir ve Markdown sözdiziminin basitliğinin yanı sıra birden çok çıktı biçimi (PDF / HTML / Word /…) olasılığını da miras alır.

Zarif ve çekici HTML oluşturmak için çok sayfalı HTML çıktısı, rakamları / tabloları / bölümleri / denklemleri numaralandırma ve çapraz referans alma, parçalar / ekler ekleme ve GitBook stilini ( https://www.gitbook.com ) içe aktarma gibi özellikler sunar. kitap sayfaları.


2
Bunu çok kafa karıştırıcı buldum, bu yüzden burada elimden gelenin en iyisini yaptım. Yanlış bir şey
bulursam

6
Kafa karıştırıcı bulduğum bir özellik, araç zincirinin her adımına aktarılan parametrelerin dokümantasyonu. Hemen hemen hiç etkileşimli yardım yoktur (otomatik tamamlama gibi) ve yaml başlıklarında veya aracılığıyla hangi parametrelerin çağrılması gerektiğini tahmin etmek gerekir.knitr_opts (ne dendiğini her zaman unuturum) veya özel pandoc argümanları veya ek yam dosyaları veya özel pandoc şablonu ... Bazen, özellikle LaTeX'i zincire eklediğinizde, biraz orman hissi verir.
baptiste

3
@baptiste Tamamen katılıyorum. Çıplak LaTeX içeren RNW belgelerini tercih etmemin nedeni de bu. Ara yokpandoc adım , daha az sihir, daha az kafa karışıklığı. Sadece kuşkusuz dik LaTeX öğrenme eğrisi. Kanımca, basit varsayılan şeylerden memnun olduğunuzda Rmarkdown harikadır. Ancak ince ayar yapmanız gerektiği anda karmaşıklık hızla yükselir.
CL.

3
Tüm bunlardan bulduğum en iyi açıklama bu. Yeni başlayanlar için ve hatta benim gibi ayrı ayrı R ve lateks konusunda uzun yıllara dayanan deneyime sahip olanlar için çok kafa karıştırıcı. Mükemmel gönderi.
StatsStudent

2
@StatsStudent Sanırım rstudio rmarkdown hile sayfasının önceki bir sürümünde, rmarkdown'dan çıktı oluşturmanın farklı adımlarını anlamaya oldukça yardımcı olan bir diyagram vardı. Belki buradaki bir cevap bir diyagramla yapabilir mi?
Mark Neal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.