如何在 knitr 文档中使用数据集名称?
例如,在以下 knitr 代码块中,使用
deparse(substitute(x))
(通常在非 knitr R 代码中工作)不会显示 knitr HTML 子文档中 New York
列表中的 Berlin
和 cities
:
```{r plot-data, results='asis'}
cities <- list(New York, Berlin)
res <- lapply(cities, function(x) {
knitr::knit_child(
text = c(
'\n',
'## `r deparse(substitute(x))`',
'\n',
'```{r, out.height="100%", out.width="100%"}',
'some_plotting_function(x)',
'```'
),
envir = environment(),
quiet = TRUE
)
})
cat(unlist(res), sep = "\n")
```
也就是说,在##注释行中,输出的城市名称每个都显示为
X[[i]]
,而不是New York
和Berlin
。 (我想在每个部分调用 some_plotting_function()
之前使用城市名称作为部分标题。)
要实现在 HTML 子文档的节标题中正确显示城市名称的所需行为,您可以修改代码以将城市名称作为参数显式传递给子文档。 您可以这样做:
cities <- list("New York", "Berlin")
res <- lapply(cities, function(city) {
knitr::knit_child(
text = c(
'\n',
paste0('## ', city),
'\n',
'```{r, out.height="100%", out.width="100%"}',
'some_plotting_function("', city, '")',
'```'
),
envir = environment(),
quiet = TRUE
)
})
cat(unlist(res), sep = "\n")
以下是我对上述代码所做的更改: