【问题标题】:In knitr, no output from pander in for loop在knitr中,for循环中的pander没有输出
【发布时间】:2015-07-25 12:25:07
【问题描述】:

在 RStudio 中使用 knitr,pander 在 for 循环中不会产生任何(或正确的)html 输出。这是一个最小的情况,作为 Rmd 输入文件。

---
title: "Untitled"
output: html_document
---

Testing why pander doesn't work in for loop

```{r global_options, include=FALSE}
knitr::opts_chunk$set(fig.width=7, fig.height=5, echo=FALSE, warning=FALSE,
  message=FALSE)

```

```{r}
library(pander)

r <- 1:10
print("pander at top level")   
pander(summary(r))    # works

print("pander in for loop")
for (i in 1:2) pander(summary(r))    #does not work (nothing in output)
for (i in 1:2) print(pander(summary(r)))    #does not work  (code in output)
for (i in 1:2) print(summary(r))    # works

```

其他(更有趣的)“摘要”对象的结果是相同的,例如lm适合的摘要。对于来自 CRAN 的 pander 0.5.2 以及从 github 加载的 0.5.3 也观察到了相同的行为。

RStudio v 0.99.467。

> sessionInfo()
R version 3.2.0 (2015-04-16)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.10.4 (Yosemite)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

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

other attached packages:
[1] pander_0.5.3

loaded via a namespace (and not attached):
 [1] minqa_1.2.4     MASS_7.3-40     Matrix_1.2-0    htmltools_0.2.6 tools_3.2.0    
 [6] yaml_2.1.13     Rcpp_0.11.6     rmarkdown_0.7   splines_3.2.0   nlme_3.1-120   
[11] grid_3.2.0      digest_0.6.8    nloptr_1.0.4    lme4_1.1-7      lattice_0.20-31

【问题讨论】:

    标签: r rstudio knitr pander


    【解决方案1】:

    @daroczig 在 cmets 中回答:

    1. 将 knitr 块选项 results 更改为 asis,在全局级别 knitr::opts_chunk$set(results="asis") 或在块级别 ```{r,results="asis"}
    2. 禁用panderOption knitr.auto.asis : panderOptions('knitr.auto.asis', FALSE)

    参照。 this issue

    ---
    title: "Untitled"
    output: html_document
    ---
    
    Testing **when** pander doesn't work in for loop
    
    ```{r global_options, include=FALSE}
    knitr::opts_chunk$set(fig.width=7, fig.height=5, echo=TRUE, warning=FALSE,
      message=FALSE)
    
    ```
    
    ```{r,results="asis"}
    library(pander)
    panderOptions('knitr.auto.asis', FALSE)
    
    r <- 1:10
    
    for (i in 1:2) pander(summary(r))
    
    ```
    

    【讨论】:

    • printcat 都不需要:pander 已经打印到标准输出(在内部使用 cat)。相关问题及评论:stackoverflow.com/questions/31491417/…
    • @daroczig 你能把它变成一个答案,以便我们指出它吗?我会删除我的答案
    • daroczig,感谢您提供相关问题的指针。但我很困惑,因为在我的最小示例中,没有 cat 或 print 的 pander(..) 不会产生任何可见的输出。
    • @EliotSmith 实际上,如果您添加 results="asis" 并在 library(pander)pander() 之间指定 panderOptions('knitr.auto.asis', FALSE)
    • pander 打印到标准输出,只要文档没有被编织。欲了解更多信息,请参阅github.com/Rapporter/pander/issues/142
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2015-03-08
    • 2022-12-03
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多