2015-05-21 35 views
10

Jestem w trakcie tworzenia pakietu w R i chcę również dołączyć plik R Markdown. Ten szablon RMarkdown zawiera funkcje z mojego pakietu i jest renderowany do dokumentu HTML przez knitr.Jak dołączyć plik RMarkdown do pakietu r?

Celem jest, aby regularnie uruchomić funkcję (poprzez cron), który sprawia, że ​​plik RMarkdown w celu wytworzenia cotygodniowych raportów.

Jak to możliwe, aby dodać te pliki do pakietu R (jak .Rmd) i odwołać .Rmd przy nawiązywaniu połączenia funkcji do renderowania powiedział szablonu?

+1

Zamknęłam to jak to naprawdę jako podwójne z kilkunastu istniejących pytania dotyczące „jak mam to $ foo” w moim pakiecie, a odpowiedź zawsze brzmi „poniżej inst'/'”. –

+1

@DirkEddelbuettel Chociaż może to być dla ciebie oczywiste, ponieważ masz więcej strukturalnej metamiedzy, odpowiedź poniżej była dokładnie tym, czego szukałem, a powiązany post nie odpowiedziałby na moje pytanie. W szczególności, uzyskanie dostępu do Rmd (innego niż po prostu wywołanie 'data (x)' było kluczowe. –

+1

@DanielEgan, cieszę się, że pomógł, ale strona naprawdę nie jest lepsza, gdy piszemy te same rzeczy X razy pod różnymi etykietami. , odpowiedzią jest zasadniczo "use" system.file() '" - po prostu spróbuj np. 'system.file (" doc "," knitr-intro.Rmd ", package =" knitr ")' który * nie ważne gdzie i jak zainstalowałeś knitr * dostarczy ci pełną ścieżkę do pliku - jak to było z 'inst/doc/knitr-intro.Rmd' i R może następnie obliczyć te rzeczy.To jest całkiem dobrze udokumentowane (jeśli trudno je znaleźć na początku) –

Odpowiedz

20

Kiedy tworzysz pakiet R, będziesz mieć drzewo katalogów zawierające następujące elementy (między innymi) w katalogu głównym pakietu: DESCRIPTION, NAMESPACE i katalogu R/. Jeśli masz także katalog inst/, wszystko w tym katalogu jest kopiowane dosłownie do katalogu twojego pakietu, z wyłączeniem inst/.

Na przykład, jeśli twój katalog opakowanie wygląda tak:

+- DESCRIPTION 
+- NAMESPACE 
+- inst/ 
| \- rmd/ 
|  \- file.Rmd 
\- R/ 
    +- file1.R 
    +- file2.R 
    \- file3.R 

Wtedy, kiedy zbudować pakiet i zainstalować go, znajdziesz w następujących w bibliotece pakiet:

+- DESCRIPTION 
+- INDEX 
+- NAMESPACE 
+- rmd/ 
| \- file.Rmd 
\- R/ 
    +- packagename 
    +- packagename.rdb 
    \- packagename.rdx 

(Inne pliki/katalogi są tworzone podczas procesu, ignoruję je dla uproszczenia).

Ostatnią informacją, którą należy wiedzieć, jest "w jaki sposób uzyskać dostęp do jest plik po zainstalowaniu? " Ponieważ niektóre systemy zainstalować R biblioteki w różnych katalogach i na górze, że użytkownicy często zainstalować pakiety w osobistym R biblioteki, nie można wiedzieć a priori, gdzie szukać Wprowadź system.file:

system.file("rmd/file.Rmd", package="packagename") 
## [1] "c:/R/R-3.1.3/library/packagename/rmd/file.Rmd" 

Może to być użyte dla całego pliku Rmd. Używam go do szablonów specyficznych dla firmy dla dokumentów renderowanych Rmd. Oznacza to, że szukam plików "uwzględnij", aby spersonalizować LaTeX, tak aby renderowany plik PDF zawierał nagłówki/stopki i był stylizowany tak, jak chcemy. Ten krok wymaga napisania funkcji, która zastępuje pdf_document (na przykład) w nagłówku YAML Rmd, ale jest dobrze pokryta w rmarkdown.rstudio.com.

+1

dziękuję bardzo @ r2evans, to było bardzo pomocne i było po prostu odpowiedzią, której szukałem, doceniam to! –

Powiązane problemy