我正在尝试了解rmarkdown
,sweave
和knitr
之间的关系。通过查看代码和示例,我遇到了两种类型的代码头,但我不明白它们属于哪种语言/程序包。
标题是
```{}
```
和
<<>>=
@
rmarkdown
,sweave
和knitr
有何关系? .rnw
上工作,我正在使用哪个人?答案 0 :(得分:2)
sweave和rmarkdown都可以为R,python和其他编程语言运行任意代码。每种方法的优缺点各不相同,但是可以快速进行比较:
R降价:
典型的文件扩展名:.rmd
(区分大小写),也许是.rmarkdown
支持R,python和several other languages
输出到HTML,docx,LaTeX(以及PDF)和several other output formats
使用三次反引号进行块划分
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.
因为它是基于markdown的,所以对交叉引用,表控件等有一些限制;有许多软件包和已知的缓解技术(其中太多,此处无法列出)。但是,您可以在markdown中使用直接LaTeX格式,因此输出到PDF也可以使用该控件(尽管LaTeX代码未转换为其他输出格式)。
调整:
典型的文件扩展名包括.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/