我想创建一个自动化的knitr报告,可以为数据框中的每个数值字段生成直方图。我的目标是在不指定实际字段的情况下完成此操作(此数据集包含超过70个字段,并且我还希望重用脚本)。
我尝试了几种不同的方法:
- 将图形保存到对象“p”中,然后在循环后调用“p” - 这只会绘制最终的图形 - 创建一个图表数组“PLOTS <- NULL”,并在循环中添加图表“PLOTS <- append(PLOTS, p)” - 在循环外部访问这些图表根本不起作用 - 甚至尝试将每个保存到“.png”文件中,但宁愿不必处理保存和重新访问每个文件的开销
我担心绘图设备的复杂性超出了我的能力。
问题:如何使以下代码块将循环中的每个图都输出到报告中?目前,我能做到的最好的是通过将其保存到对象并在循环外调用该对象来输出最终图形的输出。
RStudio中使用knitr的R markdown代码块:
我尝试了几种不同的方法:
- 将图形保存到对象“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)
}
```
从这个点开始,我希望进一步定制绘图。
qplot
外面加上print
了?如果qplot
不在循环内,knitr
会自动为你添加print
,但(至少我安装的版本)无法检测到循环内部的情况(这与R命令行的行为一致)。 - cbeleites unhappy with SX