28

我开始使用 RStudio 笔记本,但我仍在尝试了解其中一些是如何工作的。我不明白为什么在执行与消息完全无关的代码时会保留并出现一些生成的警告消息。例如,我有一个包含几个块的文档,其中最后一个会产生警告

> warnings()
Warning messages:
1: Unknown or uninitialised column: 'perc.goal.met.period'.
2: Unknown or uninitialised column: 'perc.goal.met.period'.
3: Unknown or uninitialised column: 'perc.goal.met.period'.
4: Unknown or uninitialised column: 'perc.goal.met.period'.
5: Unknown or uninitialised column: 'perc.goal.met.period'.
6: Unknown or uninitialised column: 'perc.goal.met.period'.
7: Unknown or uninitialised column: 'perc.goal.met.period'.
8: Unknown or uninitialised column: 'perc.goal.met.period'.
9: Unknown or uninitialised column: 'perc.goal.met.period'.
10: Unknown or uninitialised column: 'perc.goal.met.period'.
11: Unknown or uninitialised column: 'perc.goal.met.period'.
12: Unknown or uninitialised column: 'perc.goal.met.period'.
13: Unknown or uninitialised column: 'perc.goal.met.period'.
14: Unknown or uninitialised column: 'perc.goal.met.period'.
15: Unknown or uninitialised column: 'perc.goal.met.period'.
16: Unknown or uninitialised column: 'perc.goal.met.period'.
17: Unknown or uninitialised column: 'perc.goal.met.period'.
18: Unknown or uninitialised column: 'perc.goal.met.period'.
19: Unknown or uninitialised column: 'perc.goal.met.period'.
20: Unknown or uninitialised column: 'perc.goal.met.period'.
21: Unknown or uninitialised column: 'perc.goal.met.period'.
22: Unknown or uninitialised column: 'perc.goal.met.period'.
23: Unknown or uninitialised column: 'perc.goal.met.period'.
24: Unknown or uninitialised column: 'perc.goal.met.period'.
25: Unknown or uninitialised column: 'perc.goal.met.period'.
26: Unknown or uninitialised column: 'perc.goal.met.period'.
27: Unknown or uninitialised column: 'perc.goal.met.period'.
28: Unknown or uninitialised column: 'perc.goal.met.period'.
29: Unknown or uninitialised column: 'perc.goal.met.period'.
30: Unknown or uninitialised column: 'perc.goal.met.period'.
There were 30 warnings (use warnings() to see them)

我同意这个警告。但后来,我想我会加载一个额外的库到第一个块(我加载它们的地方)。运行该块后,我得到:

```{r echo=F, message=F, warnings=F, include=F}
# Load libraries
library(rgdal)
library(raster)
library(openxlsx)
library(tidyverse)
library(dplyr)
library(magrittr)
library(ggplot2)
library(rasterVis)
```
There were 30 warnings (use warnings() to see them)

如果我看到警告,它们就是我之前打印的那些。为什么我会在这里看到他们?我在其他与变量无关的块中也看到了这一点perc.goal.met.period。如果我看到警告,它们会停止出现一段时间,但在我仍然无法预料的时刻,它们最终会在某个时候重新出现。

这种行为有合理的解释吗?非常感谢你的帮助!

4

2 回答 2

3

您将看到警告消息,直到您清除它们。运行 warnings() 函数不会这样做。要清除警告,您可以执行以下命令:

assign("last.warning", NULL, envir = baseenv())

最好的方法是修复您的代码,以免产生警告。处理它的一种方法是tryCatch()在 R中使用。

您也可以使用supressWarnings()函数禁用所有警告,但不建议这样做,因为这会阻止您看到任何警告。

于 2018-04-27T12:26:03.790 回答
1

我的经验是,这发生在 RStudio 中,而我的代码仍然有错误,即使它没有运行(例如,当我留下一些错误的代码以供以后修改时)。当我删除、更改或将相关行转换为注释时,此行为结束。我猜这是由 RStudio 解释器引起的。知道使用 base R 的人是否有同样的问题会很有趣。

于 2019-05-26T00:54:34.623 回答