2014-07-21 10 views
6

Napisałem kilka winiet w R Markdown, z zamiarem posiadania ich zbudować z pakietu RStudio rmarkdown . Wiem, że rmarkdown::render jest funkcja używamy do konwertowania .rmd do .html (lub jakikolwiek inny format), jednakże, kiedy umieścićprzy użyciu rmarkdown jako silnika winietowego

<!-- 
%\VignetteEnginer{rmarkdown::render} 
%\VignetteIndexEntry{some test title} 
--> 

w preambule moim .rmd (i knitr i w moim Pole sugestii: DESCRIPTION, a także w polu VignetteBuilder) moja winieta nie jest kompilowana.

Czy ktoś zdołał uzyskać , aby działać jako budowniczy winiet?

Odpowiedz

2

Dlaczego chcesz używać zamiast knitr? Na pierwszy rzut oka twoje pytanie wygląda trochę na pomieszanie między a knitr. W celu wyjaśnienia:

rmarkdown to "format autorski", który jest "oparty na dzianinie i pandocie". Po uruchomieniu rmarkdown::render dzwonimy pod numer knitr i/lub pandoc.

knitr to silnik, który konwertuje rmarkdown na html/PDF/docx. To właśnie wykonuje kod R, aby uzyskać dane wyjściowe i wykresy, i tak dalej.

Autor paczki knitralready mentioned że "ponieważ pakiet rmarkdown nie jest jeszcze na CRAN, nie można w tej chwili używać silnika winietowania knitr :: rmarkdown". Jeśli nie możesz się doczekać, możesz register your own engine, ale wygląda to dość skomplikowanie.

myślę to, co chcesz:

Ten na górze doc RMD:

<!-- 
%\VignetteEngine{knitr::rmarkdown} 
%\VignetteIndexEntry{Supplementary materials} 
--> 

a to w pliku DESCRIPTION:

VignetteBuilder: knitr 
Suggests: 
    knitr 

Pełną przykład sprawdź tidyr package, tutaj jest DESCRIPTION i tutaj jest rmarkdown vignette (hat-tip do Andrie za skierowanie mnie do tego).

Jeśli jest coś konkretnego, czego potrzebujesz od , którego nie możesz uzyskać z knitr (niestandardowego stylu itp.), Powinieneś umieścić to w nowym pytaniu.

+0

używa 'knitr' skompilować winiet, a nie' rmarkdown' (pakiet RStudio związane powyżej) ... – StevieP

+0

I wprowadziliśmy pewne zmiany do mojej odpowiedzi, Wygląda na to, że możesz potrzebować bardziej konkretnego pytania. – Ben

+0

Myślę, że pod koniec dnia chciałem wyraźnie zarejestrować silnik za pomocą 'rmarkdown'. Jednakże, patrząc na to, jak 'knitr' rejestruje swoje silniki, faktycznie wygląda na to, że' if 'rmarkdown' jest obecny_,' knitr :: rmarkdown' wywoła pakiet podczas swojej procedury budowania winiet. Jedyną rzeczą, która mnie teraz niepokoi, jest to, dlaczego moja winieta traci swoją stylistykę po kompilacji ... – StevieP

8

Biorąc od @ odpowiedź Bena (i komentarzach poniżej), knitrma zarejestrowany silnik winieta, która uzyskuje dostęp (jeśli jest zainstalowany) i

<!-- 
%\VignetteEngine{knitr::rmarkdown} 
%\VignetteIndexEntry{Supplementary materials} 
--> 

jest przykładem tego, jak chcemy go zarejestrować. Jednak, aby w pełni wykorzystać (czyli konwersja .Rmd „s do .html” s i zachowanie każdej stylizacji określonej w .Rmd) należy umieścić fragment kodu powyżej PONIŻEJ W «rmarkdown preambuły» .Jako przykład, szczyt swojej .Rmd powinien wyglądać

--- 
Title: "Supplementary Materials" 
output: 
    html_document: 
    theme: flatly 
--- 
<!-- 
%\VignetteEngine{knitr::rmarkdown} 
%\VignetteIndexEntry{Supplementary Materials} 
--> 

Oczywiście, należy również upewnić się, że prawidłowo utworzony plik OPIS zawierać i knitr. Najprostszym sposobem na to jest z

Suggests: knitr, rmarkdown 
VignetteBuilder: knitr 
+1

Wygląda dobrze, cieszę się, że mamy to posortowane! – Ben

+0

Czuję się bardzo zdezorientowany, ponieważ 'knitr :: rmarkdown' rzeczywiście nie istnieje. Wpadłem na to samo rozwiązanie, przechodząc od wiersza po linii w trybie debugowania, ale go nie rozumiem – clemlaflemme

Powiązane problemy