假设我有以下的R Markdown代码:
在每个
输出的幻灯片如下所示: 但是,可以看出这很笨拙,并且不太通用。解决方案的重要特点是绘图的代码行尽可能靠在一起,只写一次;理想情况下,我只需使用块选项/钩就可以完成这个过程。
最好的答案将保留回显添加到图形中的新代码行(例如,在
如何实现这一点?
编辑:此外,我希望能够对绘图进行分组更改,而不仅仅是将所有更改输出到新绘图中,因此
---
title: "Untitled"
author: "Author"
date: "04/12/2019"
output: ioslides_presentation
---
## Slide title
```{r echo=FALSE}
plot(1:10, axes = FALSE, ty = "n")
axis(1)
## Next
axis(2)
## Next
points(1:10, 1:10)
```
在每个
## Next
点,我希望输出当前绘图的状态,以便逐步显示绘图的各个部分。我的最终目标是在一个ioslides
演示文稿中创建连续的幻灯片,其中包含这些顺序绘图,所有内容都来自于上面的代码(但理想情况下,我不希望后面的代码影响前面的代码)。我希望它具有与我当前解决方法相同的效果:---
title: "Untitled"
author: "Author"
date: "04/12/2019"
output: ioslides_presentation
---
```{r setup, include=FALSE}
## Set up environment for running the code
env <- new.env()
## Source code to run, as a list of quotes
full_src <- list(
quote({
plot(1:10, axes = FALSE, ty = "n")
axis(1)
}),
quote({
axis(2)
}),
quote({
points(1:10, 1:10)
})
)
```
## Slide title
```{r echo=FALSE}
# Evaluate first set of lines
eval(full_src[[1]], envir = env)
# Reset environment so later code can't affect earlier code
rm(list = ls(envir = env), envir = env)
```
## Slide title
```{r echo=FALSE}
# Evaluate first and second set of lines
invisible(sapply(1:2, function(i) eval(full_src[[i]], envir = env)))
# Reset environment so later code can't affect earlier code
rm(list = ls(envir = env), envir = env)
```
## Slide title
```{r echo=FALSE}
# Evaluate all lines
invisible(sapply(1:3, function(i) eval(full_src[[i]], envir = env)))
```
输出的幻灯片如下所示: 但是,可以看出这很笨拙,并且不太通用。解决方案的重要特点是绘图的代码行尽可能靠在一起,只写一次;理想情况下,我只需使用块选项/钩就可以完成这个过程。
最好的答案将保留回显添加到图形中的新代码行(例如,在
## Next
标记之间的代码),同时产生到该点的整个图形。如何实现这一点?
编辑:此外,我希望能够对绘图进行分组更改,而不仅仅是将所有更改输出到新绘图中,因此
fig.keep
无法使用。
fig.keep = 'all'
,但如果您希望输出显示在不同的幻灯片上,则可能需要单独的代码块... - Gregor Thomasfig.keep
会给我四个图,而不是三个,因为它保留了所有的更改,而不仅仅是你想要的任意分组(已编辑以澄清此点)。 - richarddmorey