我正在如下所示的循环中编写代码:
for (i in c(1:5)) {
cat(" ", i,".","**", "Header one","**" , " " , sep = "\n")
cat("A)", "Subheader one" , sep = "\n")
cat("B)", "Subheader two" , sep = "\n")
}
我希望它在呈现的文件中显示为:
Header One
A) Subtitle one
B) Subtitle two
该如何实现? 编辑 该文件旨在导出为单词.docx
答案 0 :(得分:4)
一些想法:
使用块选项 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://d3js.org/d3.v5.min.js"></script>
,这告诉results="asis"
将R中的原始结果写入输出文档(假设它在降价促销中有效)文件)(参考号:https://yihui.name/knitr/options/#text-results)
您实际上不必强行为顶级列表增加数字,pandoc会忽略数字本身并将其转换为顺序列表(参考:https://pandoc.org/MANUAL.html#ordered-lists)
如果在子列表中添加太多空格,则它们可能被视为预格式化的代码块,因此请当心。即8个太多,4个作品。
这有效:
knitr
产生此:
具有以下基本HTML:
---
output: html_document
---
```{r chunk1, echo=FALSE, results="asis"}
for (i in 1:5) {
cat("1. Header one",
" A) Subheader one",
" B) Subheader two",
sep = "\n")
}
```
注意:
我发现在您的示例中有这么多空字符串令人困惑,因此我“高效地”使用了它们。如果您有想要/需要的特定格式,则可以使用<ol style="list-style-type: decimal">
<li>Header one</li>
</ol>
<ol style="list-style-type: upper-alpha">
<li>Subheader one</li>
<li>Subheader two</li>
</ol>
<ol style="list-style-type: decimal">
<li>Header one</li>
</ol>
<ol style="list-style-type: upper-alpha">
<li>Subheader one</li>
<li>Subheader two</li>
...
做这样的事情:
sprintf
产生这个:
---
output: html_document
---
```{r chunk1, echo=FALSE, results="asis"}
for (i in 1:5) {
cat(sprintf("1. Header %d", i),
sprintf(" A) Subheader one - %d", i),
" F) Subheader two",
sep = "\n")
}
```
与c(1:5)
相同,没有1:5
要求
可以多次调用c()
,因为意识到您需要紧密管理一次调用的各个部分之间的cat
,以及两次调用sep
之间所需的一切(我希望打个电话)
修改
我也通过以下方式将其导出到Word:
cat
和子级别也正确缩进:
如果看到的内容有所不同,则可能是由于DOCX中的样式所致。这通常在参考文档ref:https://rmarkdown.rstudio.com/word_document_format#style_reference中进行控制。我正在R-3.5.1上使用---
output: word_document
---
,如果这对您有所不同,请考虑您的升级选项。