Soru Sweave ile büyük belgeler yazmak. LaTeX ile yapmak mümkün mü?


Ben sadece keşif yapıyorum Sweave ve R. Bazı örneklerini gördüm Sweave Belgeler ve bir ya da iki tane kendi başıma yazmaya başladım. Hesaplama yapma yeteneğinden çok etkilendim R ve sonuçları doğrudan LaTeX belgesi.

Şimdi daha büyük belgeleri düşünüyorum (genellikle LaTeX) Birkaç sayfadan ve birkaç parçadan oluşur. İle LaTeX (WinEdt kullanıyorum), bir ana belge ayarladım (ör. main.tex) ve sonra diğer yardımcı belgeler gibi introduction.tex, discussion.tex vb.

Sorum şu: Bunu yapabilir miyiz Sweave yanı sıra? Şimdi bekar çalışıyorum Sweave belge (.Rnw) tek başına. Birden fazla alabilir miyiz Sweave Normalde yaptığımız gibi (bir ana ve ikincil) belgeler LaTeX?

Bir geçici çözüm ayrı olmalı Sweave dosyaları ve daha sonra bunları üretmek için R  LaTeX bir kopyalanabilir parçaları LaTeX Belge ama sonra tüm fikir oldukça verimsiz ve zaman alıcı görünüyor.

Lütfen sahip olduğunuz önerileri ve çözümleri bildirin.

Çok teşekkürler...


24
2017-12-03 07:04


Menşei




Cevaplar:


İşte benim için çok iyi olan ne:

Hiçbir metni olmayan ancak belgeyi sonunda oluşturan dosyaları (bölümler, bölümler) toplamak için yalnızca bir ana dosyam ("master.Rnw") var.

Sonra başka bir dosyada ("func.Rnw") yeniden kullanılmakta olan bir R kodlu bir dosyam var. Burada çok sayıda isim var.

<<my_fun_1,eval=FALSE,echo=FALSE>>=
# code:
c <- a * b
@

Master.Rnw, \ begin {document} yaptıktan sonra ilk şey

\SweaveInput{func.Rnw}

ve oradan, benim adlandırılmış parçalarım var. Bir dosyada "chap1.Rnw" Artık sahip olabilirim

<<echo=FALSE>>=
a <- 10
b <- 25
<<my_fun_1>>
c
@

Tabi ki

\SweaveInput{chap1.Rnw})

master.Rnw içine.

Sadece zorunda \Sweave{master.Rnw} ve sonra elde edilen master.tex dosyasına pdflatex, kopyalama / yapıştırma veya birden fazla dosya işleme.

Ben sadece yaklaşık 25 tablo ve rakam ile 60 + sayfa bir kağıt yazıyorum ve her şey şu ana kadar gayet iyi çalışıyor.

Bu yardımcı olur umarım, Rainer


19
2017-12-03 08:27



@ vaettchen Detaylı açıklama için çok teşekkürler. Eğer iyi anlarsam, bir R editöründe bir master.Rnw dosyasını açık bir şekilde ayarlamanız gerekmez (bunun mümkün olup olmadığını bilmiyorum). Biri sadece kullanmak zorunda Sweaveinput{...} ana dosyada. İlginç. Senin konseptini denemeliyim. Şimdilik 1 oy. - yCalleecharan
@ yCalleecharan: Dikkat - bu büyük harfle birlikte \ SweaveInput {} - vaettchen
@ vaettchen. Tamam sana bazı detaylar sormak zorundayım. Master.Rnw'de: \ documentclass [a4paper] {article} ve \ usepackage {Sweave} var ve \ begin {document} 'den sonra, \ SweaveInput {func.Rnw} ve \ SweaveInput {chap1.Rnw}' yi ekledik. İkinci olarak, chap1.Rnw'de, << >> == ve @ ile ayrılmış JUST R kodlarımız var ve burada, örneğin c çıktısı için buradaki örnekte gösterildiği gibi fonksiyonlarınızı kullanıyorsunuz. Bu iyi mi? Ve nihayet func.Rnw dosyasında da verdiğiniz my_fun1 işleviyle birlikte SADECE R kodu var. Yani sadece master.Rnw'de \ document {class} seçeneğini ve \ usepackage {Sweave} seçeneğini ayarladık mı? - yCalleecharan
@ yCalleecharan: Doğru, sadece master.Rnw, \ documentclass {} ve \ usepackage {} ve diğer şeyleri gerektirir, tüm diğer dosyalar, Sweave parçaları ve LaTeX formatlanmış metin içeren basit metin dosyalarıdır. Koşu sonrası \Sweave{master.Rnw} Tüm dosyaların içeriği ve başarılı LaTeX derlemesi için gerekli tüm bilgileri içeren tek bir master.tex dosyasına sahip olacaksınız. - vaettchen
@ vaettchen Ne yazık ki benim için: SweaveReadFile dosyasında hata (c (ifile, dosya), sözdizimi, kodlama = kodlama): './chap1.Rnw' adı verilen bir Sweave dosyası bulunamadı. Bulunan Aramalar: Sweave -> SweaveReadFile -> SweaveReadFile Execution durduruldu - yCalleecharan


Yaklaşık 16 bölümden oluşan bir kitap yazmak için Sweave kullanıyorum. Birden çok Rnw dosyasıyla bir makefile kullanmanın iyi bir fikir olduğuna katılıyorum. Bu yaklaşıma bir başka güzel şey, yapının paralel olarak çalışabilmesidir (-p bence), bu yüzden bölümün nesnelerinin birbirine nasıl bağlı olduğuna bağlı olarak, aynı anda çok fazla kod çalıştırabilirsiniz.

Benim için fark yaratan şey önbellekleme. Kod bölümlerimden bazıları günlerce çalışabilir, ancak kitabın yazılması sırasında değişmemiştir. Çalıştırıldığında sonuçları kaydetmenize izin veren birkaç paket vardır ve yalnızca yığının bağlı olduğu nesneler değiştiğinde yığınları yeniden çalıştırır.

Bunu yapabilmek için birkaç paket var. Görmek:

http://cran.r-project.org/web/views/ReproducibleResearch.html

Ben weaver paket formunu Bioconductor kullanıyorum.

Beyin dökümü yaparken, birden fazla yazarınız varsa, paylaşılan bir Dropbox hesabının projeyi sürdürmek için mükemmel bir yol olduğunu gördüm.

maksimum


4
2017-12-04 13:11





RStudio kullanmanızı tavsiye ederim (http://www.rstudio.com/ide/) WinEdt yerine. Sweave, bu IDE'ye güzel bir şekilde entegre edilmiştir ve WinEdt'de olduğu gibi, bir dosyayı ana dosya olarak ayarlayabilirsiniz. Ana dosyadan alt dosyaları kullanarak

\SweaveInput{Child.Rnw}

Yönergeyi dahil ederek bir alt dosyayı ana dosyaya geri bağlayabilirsiniz.

% !Rnw root = Master.Rnw

alt dosyada. Bu şekilde, bir alt dosyada çalışırken ve dizgede dizildiğinde, RStudio ana dosyayı yazmayı bilir.

Ayrıntılar RStudio belgelerinde açıklanmıştır. http://www.rstudio.com/ide/docs/authoring/multiple_rnw_files

En güzel özellik, Synctex ve TeX hata günlüğü navigasyonunun, çok dosya içeren belgelerle çalışırken bile çalışmaya devam etmesidir.


1
2017-07-02 17:07