I have such a list:
> lSlopes
$A
Estimate 2.5 % 97.5 %
1 2.12 -0.56 4.80
$B
Estimate 2.5 % 97.5 %
1 2.21 -0.68 5.10
$C
Estimate 2.5 % 97.5 %
1 2.22 -2.21 6.65
It has three elements but its length can change (according to the data not shown here). I want to display each element in a chunk.
My first idea was to write a chunk containing a loop calling knit_child()
at each step, but I don't know how to get the correct rendering with knit_child()
.
I have find the following solution which works well but which requires two Rmd
files; the first one calls the second one and the second one recursively calls itself:
mainfile.Rmd:
```{r, echo=FALSE}
J <- length(lSlopes)
i <- 1
```
```{r child, child="stepfile.Rmd"}
```
Nice!
stepfile.Rmd:
```{r, echo=FALSE}
lSlopes[[i]]
i <- i+1
```
```{r child, child="stepfile.Rmd", eval= i <= J}
```
This exactly generates the rendering I want:
I love this tricky solution but I wonder whether there exists a non-recursive solution ?
Below is the RMarkdown solution analogous to https://github.com/yihui/knitr-examples/blob/master/020-for-loop.Rnw, using knit_child()
. As my solution, it requires two files, but it is much more clear.
mainfile.Rmd:
```{r, echo=FALSE}
J <- length(lSlopes)
```
```{r runall, include=FALSE}
out <- NULL
for (i in 1:J) {
out <- c(out, knit_child('stepfile.Rmd'))
}
```
`r paste(out, collapse = '\n')`
Nice!
stepfile.Rmd:
```{r, echo=FALSE}
lSlopes[[i]]
```
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With