r - 渲染 PDF 时不在 for 循环中打印绘图(自 ggplot2 更新以来)

标签 r for-loop ggplot2 knitr r-markdown

我正在尝试渲染一个 PDF,其中循环输出绘图。我之前使用的代码按预期工作,但现在只有循环中的第一个图被打印在 pdf 中。问题可能与 ggplot2 更新有关(尽管我不确定)。

下面我提供了一个可重现的示例(因为我的 rmarkdown 文件太长),它执行时出现相同的错误 - 仅打印循环中的第一个图。

当然,我可能遗漏了一些非常明显的东西!非常感谢任何帮助。

---
title: "Check"
output: pdf_document
---


```{r, results='asis'}
library(ggplot2)
Values = names(mtcars)[1:4]
mtcars$gear <- as.factor(mtcars$gear)
for(v in Values){
 print(ggplot(mtcars, aes(x=carb, y = v, shape=gear)) + geom_point())
}
```

> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_Ireland.1252  LC_CTYPE=English_Ireland.1252    LC_MONETARY=English_Ireland.1252 LC_NUMERIC=C                    
[5] LC_TIME=English_Ireland.1252    

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] HH_3.1-24           gridExtra_2.0.0     multcomp_1.4-1      TH.data_1.0-6       survival_2.38-3     mvtnorm_1.0-3       latticeExtra_0.6-26
 [8] RColorBrewer_1.1-2  lattice_0.20-33     stringr_1.0.0       pander_0.6.0        xtable_1.8-0        ggplot2_2.0.0       rmarkdown_0.9.2    
[15] markdown_0.7.7      knitr_1.12         

loaded via a namespace (and not attached):
 [1] zoo_1.7-12       reshape2_1.4.1   splines_3.2.3    colorspace_1.2-6 htmltools_0.3    yaml_2.1.13      gmp_0.5-12       foreign_0.8-66  
 [9] Rmpfr_0.6-0      plyr_1.8.3       munsell_0.4.2    gtable_0.1.2     leaps_2.9        codetools_0.2-14 evaluate_0.8     labeling_0.3    
[17] httpuv_1.3.3     lmtest_0.9-34    vcd_1.4-1        proto_0.3-10     Rcpp_0.12.0      acepack_1.3-3.3  scales_0.3.0     formatR_1.2.1   
[25] Hmisc_3.16-0     abind_1.4-3      mime_0.4         digest_0.6.9     stringi_1.0-1    shiny_0.13.0     tools_3.2.3      sandwich_2.3-3  
[33] magrittr_1.5     Formula_1.2-1    cluster_2.0.3    MASS_7.3-45          R6_2.1.0         rpart_4.1-10     nnet_7.3-11 R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_Ireland.1252  LC_CTYPE=English_Ireland.1252    LC_MONETARY=English_Ireland.1252 LC_NUMERIC=C                    
[5] LC_TIME=English_Ireland.1252    

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] HH_3.1-24           gridExtra_2.0.0     multcomp_1.4-1      TH.data_1.0-6       survival_2.38-3     mvtnorm_1.0-3       latticeExtra_0.6-26
 [8] RColorBrewer_1.1-2  lattice_0.20-33     stringr_1.0.0       pander_0.6.0        xtable_1.8-0        ggplot2_2.0.0       rmarkdown_0.9.2    
[15] markdown_0.7.7      knitr_1.12         

loaded via a namespace (and not attached):
 [1] zoo_1.7-12       reshape2_1.4.1   splines_3.2.3    colorspace_1.2-6 htmltools_0.3    yaml_2.1.13      gmp_0.5-12       foreign_0.8-66  
 [9] Rmpfr_0.6-0      plyr_1.8.3       munsell_0.4.2    gtable_0.1.2     leaps_2.9        codetools_0.2-14 evaluate_0.8     labeling_0.3    
[17] httpuv_1.3.3     lmtest_0.9-34    vcd_1.4-1        proto_0.3-10     Rcpp_0.12.0      acepack_1.3-3.3  scales_0.3.0     formatR_1.2.1   
[25] Hmisc_3.16-0     abind_1.4-3      mime_0.4         digest_0.6.9     stringi_1.0-1    shiny_0.13.0     tools_3.2.3      sandwich_2.3-3  
[33] magrittr_1.5     Formula_1.2-1    cluster_2.0.3    MASS_7.3-45 R6_2.1.0         rpart_4.1-10     nnet_7.3-11 

PDF output

最佳答案

正如 CL 在评论中所建议的那样。和 JasonAizkalns,一个 knitr 错误是问题所在,因此下载 knitr 的开发版本应该可以解决这个问题。

update.packages(ask = FALSE, repos = 'http://cran.rstudio.org')
install.packages('knitr', repos = c('http://yihui.name/xran', 'http://cran.rstudio.org'))

devtools::install_github('yihui/knitr', build_vignettes = TRUE)

同样对于面临相同问题但无法/不愿下载开发版本的任何其他人,在打印命令后添加 cat('\n\n') 是该错误的解决方法!

for(v in Values){
 print(ggplot(mtcars, aes(x=carb, y = v, shape=gear)) + geom_point())
 cat('\n\n')
}

关于r - 渲染 PDF 时不在 for 循环中打印绘图(自 ggplot2 更新以来),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34857276/

相关文章:

R 不在子集中

for-loop - 如何在 Julia 中使用矩阵设置约束?

javascript - JavaScript 中 forEach 和 for 循环的区别

r - 用ggplot绘制水平线

r - 突然 ggplot 崩溃了 R 工作室,有什么建议吗?

r - 整个 data.frame R 的分段插值

r - 控制平滑器的透明度和置信区间

r - 在 R 中并行化矢量化函数的最简单方法是什么?

java - 周围的 try/catch 是否会破坏 for 循环?

r - 如何在嵌套箱线图中添加中间空间ggplot2