我想一个RMarkdown文档中使用for循环单块内产生多条曲线(在GGPLOT2)。
当我硬编码代码来生成两个地块,该地块被渲染为预期。见我的代码名为“硬编码的方法”一节。
但是,当我加载在通过列表的列表和循环两个地块的参数,该地块都没有显示出来。我没有看到任何错误,无论是。请参阅我的代码名为“环法”一节。
谁能告诉我是怎么回事,如何我能解决这个问题?谢谢。
这里是我的代码:
---
title: "Test for multiple plots"
author: "KC"
date: "4/3/2020"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
# Hardcoded Method
Sample Plot - One plot at a time
```{r Multiple Plots separately listed, echo=TRUE, fig.keep="all"}
library(ggplot2)
library(datasets)
combo = c("temperature", "pressure")
ggplot(pressure,
mapping=aes(x=base::get(combo[1]), y=base::get(combo[2]))) +
geom_point() +
labs(x=combo[1],
y=combo[2],
title=paste("Hardcoded Method:", paste(combo, collapse=" vs ")))
combo = c("pressure", "temperature")
ggplot(pressure,
mapping=aes(x=base::get(combo[1]), y=base::get(combo[2]))) +
geom_point() +
labs(x=combo[1],
y=combo[2],
title=paste("Hardcoded Method:", paste(combo, collapse=" vs ")))
```
# Loop Method
Now, I use a loop method to generate the same plots.
```{r Multiple Plots in a loop, echo=TRUE, fig.keep="all"}
library(ggplot2)
library(datasets)
combos = list(c("temperature", "pressure"), c("pressure", "temperature"))
for (combo in combos) {
# combo = combos[[1]]
print(paste("Plotting", paste(combo, collapse=" vs ")))
ggplot(pressure,
mapping=aes(x=base::get(combo[1]), y=base::get(combo[2]))) +
geom_point() +
labs(x=combo[1],
y=combo[2],
title=paste("Loop Method:", paste(combo, collapse=" vs ")))
}
```
当使用for
与降价文件的代码块循环,你需要明确print()
的情节。所以,下面的代码将无法正常工作:
for (i in length(x)) {
ggplot(...)
}
你需要转换为这样的事情:
for (i in length(x)) {
p <- ggplot(...)
print(p)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句