我想创建一个自动编织器报告,它将为我的数据帧中的每个数字字段生成直方图 . 我的目标是在不必指定实际字段的情况下执行此操作(此数据集包含超过70个,我还想重用该脚本) .
我尝试过几种不同的方法:
-
将绘图保存到对象
p
,然后在循环后调用p
-
这只绘制了最终的情节
-
创建绘图数组
PLOTS <- NULL
,并在循环中附加绘图PLOTS <- append(PLOTS, p)
-
从循环中访问这些图根本不起作用
-
甚至尝试将每个文件保存到
.png
文件,但宁愿不必处理保存然后重新访问每个文件的开销
我担心情节设备的复杂性正在逃避我 .
问题
如何在循环内的每个绘图中将以下块输出到报告中?目前,我能够实现的最好的是输出最终绘图,将其保存到对象并在循环外调用该对象 .
在RStudio中使用 knitr
的R markdown块:
```{r plotNumeric, echo=TRUE, fig.height=3}
suppressPackageStartupMessages(library(ggplot2))
FIELDS <- names(df)[sapply(df, class)=="numeric"]
for (field in FIELDS){
qplot(df[,field], main=field)
}
从这一点来说,我希望进一步定制这些图 .
4 回答
将
qplot
包裹在print
中 .如果
qplot
在循环之外,knitr
将为您执行此操作,但(至少我已安装的版本)未在循环内检测到此内容(这与R命令行的行为一致) .我在降价中使用子Rmd文件,也适用于sweave .
在Rmd中使用以下代码段:
作为Hugo优秀答案的补充,我相信在2016年你需要包含一个print command as well:
希望添加一个快速注释:不知何故,我用Google搜索了相同的问题并进入此页面 . 现在在2018年,只需在循环中使用
print()
.