Sweave v. Knitr v. Rmarkdown: заголовки фрагментов кода - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь понять связь между rmarkdown, sweave и knitr. Глядя на код и примеры, я столкнулся с двумя типами заголовков кода и не понимаю, к какому языку / пакету они относятся.

Заголовки

```{}
```

и

<<>>=
@
  1. В чем разница между ними?
  2. Как они относятся к rmarkdown, sweave и knitr?
  3. Если я работаю на .rnw, какой из них я использую?

1 Ответ

0 голосов
/ 11 ноября 2018

И sweave, и rmarkdown предоставляют возможность запускать произвольный код для R, Python и других языков программирования.Плюсы и минусы каждого разнообразны, но быстрое сравнение:

R уценка:

  • типичные расширения файлов: .rmd (без учета регистра), возможно .rmarkdown

  • поддерживает R, Python и несколько других языков

  • выводит в HTML, DOCX, LaTeX (иследовательно, PDF) и несколько других форматов вывода

  • использует тройной обратный трюк для разграничения фрагментов

    Regular text.
    
    ```{r chunkname, chunkoptions, ...}
    a <- 1
    ```
    
    ```{python pychunk, chunkoptions, ...}
        def myfun(v: list) -> list:
        """
        Something important in this docstring.
        """
        return [a+1 for a in v]
    ```
    
    More regular text.
    
  • поскольку он основан на уценке, существуют некоторые ограничения для перекрестных ссылок, контроля таблиц и т. д .;для многих из них существуют пакеты и известные методы их устранения (их слишком много, чтобы перечислять их здесь).Тем не менее, вы можете использовать прямое форматирование LaTeX в уценке, так что вывод в PDF также может использовать этот контроль (хотя код LaTeX не переведен для других форматов вывода).

Sweave:

  • типичные расширения файлов включают .rnw (без учета регистра), и я видел .noweb (не совсем уверен в этом ...)

  • поддерживает R и, возможно, другие языки, если вы можете получить к ним через R (например, через reticulate)

  • выводит в LaTeX и, следовательно, PDF

  • использует <<>>= и @ для разграничения фрагментов:

    Regular text.
    
    <<chunkname, chunkoptions, ...>>=
    a <- 1
    @
    
    More regular text.
    
  • , поскольку он основан непосредственно на LaTeX, вы можете какбольшой контроль над форматированием, перекрестными ссылками и т. д.

knitr

  • обрабатывает файлы обоих форматов sweave и rmarkdown
  • может потребоваться некоторая предварительная обработка развертки (например, с использованием Sweave2knitr), ссылка: https://yihui.name/knitr/demo/sweave/
...