如何在R的for循环中生成带不同块选项的R Markdown代码块与标题?
问题:自动生成带自定义chunk选项的R Markdown代码块与标题
我需要在R的for循环中,针对长度随输入变化的data.frame列表,自动生成R Markdown的标题和代码块,作为ggplot2绘图的输入,最终使用knitr包将该R Markdown文档编织为html_document。此前尝试过Stack Overflow上的类似解决方案,但无法满足需求:我需要重复生成4个代码块,每个代码块必须设置不同的fig.width、fig.height参数才能正确显示ggplot2对象,因此不能仅在代码块中设置单一选项。
以下是我的一次失败尝试示例:
数据准备代码
# Chunk data demo data_list <- list(a=data.frame(), b=data.frame(), c=data.frame()) plot_1 <- list() plot_2 <- list() for (i in 1:length(data_list)) { data_list[[i]] <- data.frame(x = 1:5, y = 1:5) plot_1[[i]] <- ggplot(data_list[[i]], aes(x, y)) + geom_point() plot_2[[i]] <- ggplot(data_list[[i]], aes(x, y)) + geom_point() }
生成Markdown的代码块(失败尝试)
#```{r, results='asis'} (Start of R markdown chunk) # Chunk generation (only 2 chunks are written for brevity) for (i in 1:length(data_list)) { # Section heading cat("\n\n") cat("##", names(data_list)[i]) # Chunk 1 ---- cat("\n\n") cat("### Sub-section 1") cat("\n\n") cat("**Title 1**") cat("\n\n") cat('```{r, fig.width=10, fig.height=10}') cat("\n\n") print(plot_1[[i]]) cat("\n\n") cat('```') # Chunk 2 ---- cat("\n\n") cat("### Sub-section 2") cat("\n\n") cat("**Title 2**") cat("\n\n") cat('```{r, fig.width=10, fig.height=3}') # NOTE: Change in option cat("\n\n") print(plot_2[[i]]) cat("\n\n") cat('```') cat("\n\n") } #``` (End of R markdown chunk)
编辑:移除了ggsave()调用,因其无需用于说明编织文档中显现的问题。
内容的提问来源于stack exchange,提问作者Buzz B
相关产品推荐
相关产品推荐

