警告消息不断以与警告无关的块形式出现在 RStudio 笔记本中

Warning messages keep appearing in RStudio notebooks in chunks unrelated to the warnings

我开始使用 RStudio notebooks,我仍在尝试了解其中一些功能的工作原理。 我不明白为什么在执行与消息完全无关的代码时会保留并显示某些生成的警告消息。例如,我有一个包含多个块的文档,其中最后一个产生警告

> 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 无关的块中也看到了这一点。如果我看到警告,它们会暂时停止出现,但在我仍然无法预料的时刻,它们最终会在某个时候重新出现。

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

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

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

不过,最好的方法是修复您的代码,这样就不会产生警告。一种处理方法是在 R.

中使用 tryCatch()

您也可以使用 supressWarnings() 功能禁用所有警告,但不推荐这样做,因为这会阻止您看到任何警告。

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