在我的数据集中,我有60个组要分析,并使用R Markdown将其放入HTML报告中.因为我想对每个组应用相同的分析,我希望有一种方法可以动态生成代码块/分析.
简单地说,我想避免复制块60次.
我碰到这个这个问题,它使用儿童knitr.我试图用虹膜数据集复制它.在下面的例子中,我想做的就是生成三个H4标题,每个标题一个.
值得注意的是,我没有嫁给这种方法,它似乎与我想要做的事情有关.
这是我使用的文件:
parent.RMD文件.这将是我的"主人"报告.
Automate Chunks of Analysis in R Markdown
========================================================
```{r setup, echo=FALSE}
library(knitr)
```
```{r run-numeric-md, include=FALSE}
out = NULL
for (i in as.character(unique(iris$Species))) {
out = c(out, knit_child('child.Rmd'))
}
Run Code Online (Sandbox Code Playgroud)
```
这是child.Rmd.
#### Species = `r [i]`
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何创建一个循环,将一些文本插入到rmarkdown文件中,然后生成与该标题对应的图形或表格.以下是我的工作原理:
for(i in 1:max(month)){
### `r month.name[i]` Air quaility
```{r, echo=FALSE}
plot(airquality[airquality$Month == 5,])
```
}
Run Code Online (Sandbox Code Playgroud)
这个当然只是打印for循环作为文本,如果我用r``环绕for循环,我只会得到一个错误.
我希望代码生成一个如下所示的rmd文件:
情节
情节
等等等等.有任何想法吗?我不能使用乳胶因为我在工作时他们不让我们下载exe文件,而且我不知道如何使用乳胶.我想制作一个word文档.
我想迭代我的R markdown文件中的结果集列表.当我生成输出时,我想要包含一些文本,例如带有结果集名称的标题.
我发现一个hacky解决方案是直接在这样的文档中硬编码html输出
## All results
```{r loopResults, echo=FALSE, results='asis'}
results = list(result1 = data.frame(x=rnorm(3), y=rnorm(3)), result2=data.frame(x=rnorm(3), y=rnorm(3)))
for(res in names(results)) {
cat(paste("<h3>Results for: ", res, "</h3>>"))
plot(results[[res]]$x, results[[res]]$y)
}
Run Code Online (Sandbox Code Playgroud)
这似乎不是正确的做事方式,特别是因为我想在时间通过pandoc创建PDF文档,并且必须更改硬编码表达式.(我目前有便利功能,如h3(文本,类型)).
有没有更好的方法呢?
我正在尝试生成 R Markdown 文档,其中包含从循环动态生成的标题。
我使用了类似SO问题中的建议:Knit: print text from code block as R markdown,Using bold text in a Loop for a Word document in Rmarkdown并写道
---
title: "Untitled"
output:
html_document:
toc: true
toc_depth: 5
---
## R Markdown
```{r, warning=FALSE, message=FALSE, echo=FALSE}
library(ggplot2)
library(dplyr)
```
```{r fig.width=4, fig.height=2, echo=FALSE, results='asis'}
experiment_names <- paste0("Experiment ", 1:3)
for (id in 1:3){
cat(" \n")
cat("### ", experiment_names[id])
cat(" \n")
set.seed(id)
plt <-
data.frame(x = rnorm(100)) %>%
ggplot(aes(x = x)) + …Run Code Online (Sandbox Code Playgroud) 我想知道是否有一种简单的方法来生成一堆带有可变标题的表格或图形knitr.我知道的唯一方法是:(简化自https://github.com/yihui/knitr-examples/blob/master/075-knit-expand.Rnw).但是src在循环之后收集输出然后打印它是一种拖累,因为我想编写一个函数来从任意数据集生成这样的循环.
\documentclass{article}
\title{Using knit\_expand() for templates}
\author{Yihui Xie}
\begin{document}
\maketitle
\tableofcontents
<<lm-mtcars, tidy.opts=list(width.cutoff=55)>>=
# the template
tpl = c("\\subsection{Regression on {{xvar}}}",
"<<lm-{{xvar}}>>=",
"lm(mpg~{{xvar}}, data=mtcars)",
"@")
# expand to knitr source and pass to knit()
src = lapply(names(mtcars)[-1], function(xvar) {knit_expand(text = tpl)})
@
\Sexpr{knit(text = unlist(src))}
\end{document}
Run Code Online (Sandbox Code Playgroud)
所以我想要做的就是这样:
\documentclass{article}
\title{Using knit\_expand() for templates}
\author{Yihui Xie}
\begin{document}
\maketitle
\tableofcontents
<<lm, tidy.opts=list(width.cutoff=55)>>=
myLfFun=function(dataset){
... some function definition which produces say an lm for each variable in dataset …Run Code Online (Sandbox Code Playgroud)