使用rmarkdown :: render时未知的变量

时间:2018-05-09 11:08:26

标签: r r-markdown knitr

当我在R-Script中自动调用rmarkdown::render()时,我遇到了麻烦 - 在RMD本身内 - 我尝试访问列表变量。在示例中,我想遍历列表变量的内容并为每个列表呈现一个表。

第一个块

# This works
```{r, echo = FALSE, results='show'}
knitr::kable(a[[1]])
```
RMD中的

成功渲染。但是,第二节块

# This doesn't work
```{r, echo = FALSE, results='show'}
for (i in 1:length(a)) {
  knitr::kable(a[[i]])
}

根本没有评估。甚至没有错误/警告。完整输出呈现如下:

enter image description here

如何成功渲染第二个块,名为'这不起作用'?我希望在这里看到3个列表,显示数字1:10,11:20,21:30。

可重复的示例:将以下脚本保存为render.R

setwd("C:/path_to_your_script_location/")
# generate a list containing 3 lists
a <- list(list(tour_id=1:10), list(tour_id=11:20), list(tour_id=21:30))
rmarkdown::render("test.Rmd", output_dir = "./", output_file = "out_test.html",
                  encoding = "UTF-8", quiet = TRUE)

并将以下内容另存为test.Rmd

---
title: Test
author: "Author"
date: "May 9th, 2018"
output: html_document
---

# This works
```{r, echo = FALSE, results='show'}
knitr::kable(a[[1]])
```
# This doesn't work
```{r, echo = FALSE, results='show'}
for (i in 1:length(a)) {
  knitr::kable(a[[i]])
}
```

1 个答案:

答案 0 :(得分:2)

我的解决方案:将您的上一个块更改为

```{r, echo = FALSE, results='asis'}
for (i in 1:length(a)) {
 print(knitr::kable(a[[i]]))
}
```