当使用R markdown时如果想要使用代码添加文本,有一些简单的方法可以做到这一点。
对于表也是如此,使用kable
命令非常容易。
但是,假设您希望以编程方式在报表中插入标题或列表。
```{r, results='asis'}
headers=list("We","are","your","friends")
for (i in list_a){
#add i as header
}
```
并且您希望这与在Rmd文件中写入相同:
#We
#are
#your
#friends
另一个例子是自动创建标题而不是列表:
```{r, results='asis'}
list_a=list("We","are","your","friends")
for (i in list_a){
#print i to a rmd list
}
```
如前所述应该与写作相同:
*We
*are
*your
*friends
这不仅是格式化问题,因为Rmd文件的上下文表是根据这些标题动态创建的。
答案 0 :(得分:19)
您需要在R中构建所需的markdown,并将其与chunk选项中的参数results = 'asis'
一起使用。因此,像下面这样的东西会做你想要的:
```{r, results='asis'}
headers <- list("We","are","your","friends")
for (i in headers){
cat("#", i, "\n")
}
```
这里的for
- 循环将创建输出
# We
# are
# your
# friends
直接用作.md文档中的输入。
答案 1 :(得分:6)
使用pander package将R对象转换为Pandoc的降价:
> headers=list("We","are","your","friends")
> list_a=list("We","are","your","friends")
> library(pander)
> pandoc.header(headers)
# We
# are
# your
# friends
> pander(list_a)
* We
* are
* your
* friends
<!-- end of list -->
第一个示例使用helper function创建标题,而第二个示例只使用generic S3 method,可以将各种R对象稳健地转换为markdown。
答案 2 :(得分:0)
对于想要在每个标题下方绘制图表的人,这就是我的方法。
```{r, results="asis"}
for (i in headers){
cat("# ", i, "\n",
knitr::knit_child("plot.Rmd", quiet = TRUE), "\n")
}
```
在plot.Rmd
中放入您的绘图代码,例如
```{r}
# plotting code
```
答案 3 :(得分:0)
此解决方案对我有用,在R 3.6.3中将.Rmd编译为PDF:
def loop_dir():
files=[]
for file in glob.glob('/Users/++++/+++/test/*.mp4'):
files.append(str(file).split('/')[-1])
return files