Предупреждающие сообщения продолжают появляться в ноутбуках RStudio в кусках, не связанных с предупреждениями

Я начинаю использовать ноутбуки 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. Если я увижу предупреждения, они перестанут появляться на некоторое время, но в тот момент, когда я еще не могу предвидеть, они в конечном итоге появятся в какой-то момент.

Есть ли логическое объяснение этого поведения? Большое спасибо за вашу помощь!

Ответы

Ответ 1

Вы увидите предупреждающие сообщения, пока не очистите их. Запуск функции warnings() этого не делает. Для сброса предупреждений вы можете выполнить следующую команду:

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

Однако лучший подход - это исправить ваш код, чтобы предупреждения не выводились. Один из способов справиться с этим - использовать tryCatch() в R.

Вы также можете отключить все предупреждения с помощью функции supressWarnings(), но это не рекомендуется, поскольку это помешает вам увидеть любое из них.

Ответ 2

Мой опыт показывает, что это происходит в RStudio, в то время как мой код все еще содержит ошибку, даже если это не выполняется (например, когда я оставляю некоторый неправильный код для последующего пересмотра). Когда я удаляю, изменяю или конвертирую в комментарии соответствующие строки, такое поведение заканчивается. Я предполагаю, что это вызвано интерпретатором RStudio. Было бы интересно узнать, имеют ли люди, использующие базу R, ту же проблему.