我有一个很长的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 列表中。
答案 0 :(得分:0)
是的! @ user2554330是正确的。 rmarkdown::render("yourfile.Rmd")
在您自己的全局环境中运行良好。
如果您使用的是RStudio,请记住以下几点:
knit.global()
检查环境。无论您键入命令还是使用编织按钮(显然会产生一个新的R会话),结果都是相同的。您可以到达第一个,但不能到达第二个。
环境:R_GlobalEnv
是的,所有丑陋的警告(以我为例,来自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