检索编织会话中生成的警告

时间:2019-05-04 16:00:48

标签: r r-markdown

我有一个很长的R Markdown脚本,该脚本会产生五十多个编织错误。它会生成一个需要修复的.pptx文件(尽管我看不到需要修复的内容)。 PowerPoint有时会根据第一个标题幻灯片重命名文件。编织会话会产生一条警告消息,邀请我,因此请输入warnings()进行检查。在knitr会话处于我看不见的环境中的情况下,键入warnings()并没有帮助。

  

创建的输出:demo.pptx有50个或更多警告(使用   warnings()查看前50个信息

我不能给出产生针织警告的简洁,可重现的示例,但我可以告诉您,它们来自插入符号和gbm,它们会输出很多格式化输出(黑色)和未格式化消息(红色) ),甚至不需要的图,尽管默认设置为verbose = FALSE。

这是我的.rmd文件的头部:

---
title: "Demo of knitr warnings when making Powerpoint"
author: "author name"
output:
  powerpoint_presentation:
    slide_level: 2
---
```{r global_options, include=FALSE}
knitr::opts_chunk$set(fig.width=10, echo=FALSE, warning=FALSE, message=FALSE, cache=FALSE)
```

```{r setup}   
suppressPackageStartupMessages(library(knitr))
suppressPackageStartupMessages(library(rmarkdown))
```

如何发现执行knitr的环境,以便可以访问警告?当我尝试重现警告时,我注意到由我的代码生成的警告显然没有被附加到 last.warnings 列表中。

2 个答案:

答案 0 :(得分:0)

是的! @ user2554330是正确的。 rmarkdown::render("yourfile.Rmd")在您自己的全局环境中运行良好。

如果您使用的是RStudio,请记住以下几点:

  • 源是保存到磁盘的任何内容,所以请不要忘记保存。
  • 您可以使用knit.global()检查环境。无论您键入命令还是使用编织按钮(显然会产生一个新的R会话),结果都是相同的。您可以到达第一个,但不能到达第二个。
      

    环境:R_GlobalEnv

  • 直到您在本地环境中才能看到对象 执行完成。
  • PowerPoint不会自动启动。

是的,所有丑陋的警告(以我为例,来自gbm)都在那里。

答案 1 :(得分:0)

使用rmarkdown::render("yourfile.Rmd")运行knitr,它将在当前会话中运行。然后warnings()将起作用。

例如,我没有从您的代码中看到任何警告,但是在添加时

for ( i in 1:100)
  warning(i)

在代码块中,我收到一条类似您的消息。所以我用上面的想法,看到了

> rmarkdown::render("~/temp/Untitled.Rmd")


processing file: Untitled.Rmd
  |................                                                 |  25%
  ordinary text without R code

  |................................                                 |  50%
label: global_options (with options) 
List of 1
 $ include: logi FALSE

  |.................................................                |  75%
  ordinary text without R code

  |.................................................................| 100%
label: setup

output file: Untitled.knit.md

'/Applications/RStudio 2.app/Contents/MacOS/pandoc/pandoc' +RTS -K512m -RTS Untitled.utf8.md --to pptx --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash+smart --output Untitled.pptx --slide-level 2 

Output created: Untitled.pptx
There were 50 or more warnings (use warnings() to see the first 50)
> warnings()
Warning messages:
1: In eval(expr, envir, enclos) : 1
2: In eval(expr, envir, enclos) : 2
3: In eval(expr, envir, enclos) : 3
4: In eval(expr, envir, enclos) : 4
5: In eval(expr, envir, enclos) : 5
6: In eval(expr, envir, enclos) : 6
7: In eval(expr, envir, enclos) : 7
8: In eval(expr, envir, enclos) : 8
9: In eval(expr, envir, enclos) : 9
10: In eval(expr, envir, enclos) : 10
11: In eval(expr, envir, enclos) : 11
12: In eval(expr, envir, enclos) : 12
13: In eval(expr, envir, enclos) : 13
14: In eval(expr, envir, enclos) : 14
15: In eval(expr, envir, enclos) : 15
16: In eval(expr, envir, enclos) : 16
17: In eval(expr, envir, enclos) : 17
18: In eval(expr, envir, enclos) : 18
19: In eval(expr, envir, enclos) : 19
20: In eval(expr, envir, enclos) : 20
21: In eval(expr, envir, enclos) : 21
22: In eval(expr, envir, enclos) : 22
23: In eval(expr, envir, enclos) : 23
24: In eval(expr, envir, enclos) : 24
25: In eval(expr, envir, enclos) : 25
26: In eval(expr, envir, enclos) : 26
27: In eval(expr, envir, enclos) : 27
28: In eval(expr, envir, enclos) : 28
29: In eval(expr, envir, enclos) : 29
30: In eval(expr, envir, enclos) : 30
31: In eval(expr, envir, enclos) : 31
32: In eval(expr, envir, enclos) : 32
33: In eval(expr, envir, enclos) : 33
34: In eval(expr, envir, enclos) : 34
35: In eval(expr, envir, enclos) : 35
36: In eval(expr, envir, enclos) : 36
37: In eval(expr, envir, enclos) : 37
38: In eval(expr, envir, enclos) : 38
39: In eval(expr, envir, enclos) : 39
40: In eval(expr, envir, enclos) : 40
41: In eval(expr, envir, enclos) : 41
42: In eval(expr, envir, enclos) : 42
43: In eval(expr, envir, enclos) : 43
44: In eval(expr, envir, enclos) : 44
45: In eval(expr, envir, enclos) : 45
46: In eval(expr, envir, enclos) : 46
47: In eval(expr, envir, enclos) : 47
48: In eval(expr, envir, enclos) : 48
49: In eval(expr, envir, enclos) : 49
50: In eval(expr, envir, enclos) : 50