我见过两个斜角括号:
<<>>=
...
@
并返回滴答声:
```{}
...
```
用于表示knitr文档中的“块”。这两者有什么区别?
例如,我可以从documentation:
替换以下代码块吗?<<my-label, eval=TRUE, dev='png'>>=
set.seed(1213) # for reproducibility
x = cumsum(rnorm(100))
mean(x) # mean of x
plot(x, type = 'l') # Brownian motion
@
使用:
```{r my-label}
set.seed(1213) # for reproducibility
x = cumsum(rnorm(100))
mean(x) # mean of x
plot(x, type = 'l') # Brownian motion
```
答案 0 :(得分:4)
反引号语法用于Rmarkdown文档(Markdown与R代码混合:通常存储为文件扩展名.rmd
),而角括号语法用于混合LaTeX和R代码的文档(通常存储为.Rnw
)。我不知道该怎么称呼后者;他们曾经是“Sweave文档”,但Sweave
包已基本上被knitr
包取代。但是,knitr
(和rmarkdown
包)都可以同时处理markdown + R和LaTeX + R文档......
建议您替换
```{r chunklabel,..options..}
...
```
的
<<chunklabel,..options..>>=
...
@
看似合理(并且很容易尝试一下!)当然,您需要确保您使用的knitr
/ rmarkdown
工具知道您的语法类型是什么从...开始。 knitr::knit
似乎(基于文档)从文件扩展名中猜测。 rmarkdown::render
的文档仅讨论.rmd
。
解决所有问题的最简单方法可能只是做一些实验。
答案 1 :(得分:0)
使用块引用来重用由this question和link to the documentation on Reference/Macro处理的块时,似乎只有一个区别,它只使用<<>>
类型的块。复制示例:
<<chunk1>>=
1 + 1
@
<<chunk2>>=
<<chunk1>>
@
这样第二个块只会复制chunk1
中的代码。
要将其转换为后退标记块,您似乎需要执行以下操作:
```{r chunk1}
1 + 1
```
就是我的问题和Ben Bolker的答案所建议的直接替换。但是,要引用块1,似乎仍然需要有角度的括号:
```{r chunk2}```
<<chunk1>>
```
此外,请注意将代码保留为:
<<chunk2>>=
<<chunk1>>
@
不起作用,至少与rmarkdown::render
一起使用.Rmd
扩展名保存的文件。