警告消息一直以与警告无关的块形式出现在 RStudio 笔记本中
Posted
技术标签:
【中文标题】警告消息一直以与警告无关的块形式出现在 RStudio 笔记本中【英文标题】:Warning messages keep appearing in RStudio notebooks in chunks unrelated to the warnings 【发布时间】:2017-09-22 15:55:36 【问题描述】:我开始使用 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
无关的块中看到了这一点。如果我看到警告,它们会停止出现一段时间,但在我仍然无法预料的时刻,它们最终会在某个时候重新出现。
这种行为有合理的解释吗?非常感谢您的帮助!
【问题讨论】:
这种情况经常发生在我身上。如果我编辑并保存一个 rmd(我认为这是关键),那么我在控制台中输入的下一个命令会将会话中的每个警告带回 50 倍以上。 哦!所以它不仅仅发生在我身上。也许它只是一个提醒您代码中某处存在警告的功能。感谢您的评论弗兰克! 我认为当你缓存一个块时会发生这种情况,警告稍后会回来。我也遇到过这种情况。 那可能是对的,那是我的情况 有用:assign("last.warning", NULL, envir = baseenv())
【参考方案1】:
在您清除它们之前,您会看到警告消息。运行 warnings() 函数不会这样做。 要清除警告,您可以执行以下命令:
assign("last.warning", NULL, envir = baseenv())
最好的方法是修复您的代码,以免产生警告。处理它的一种方法是在 R 中使用tryCatch()
。
您也可以使用supressWarnings()
函数禁用所有警告,但不建议这样做,因为这会阻止您看到任何警告。
【讨论】:
【参考方案2】:我的经验是,这发生在 RStudio 中,而我的代码仍然有错误,即使它没有运行(例如,当我留下一些错误的代码以待稍后修改时)。当我删除、更改或转换为 cmets 相关行时,此行为结束。我猜这是由 RStudio 解释器引起的。知道使用 base R 的人是否有同样的问题会很有趣。
【讨论】:
以上是关于警告消息一直以与警告无关的块形式出现在 RStudio 笔记本中的主要内容,如果未能解决你的问题,请参考以下文章
关闭呈现 viewController 不起作用并出现警告消息
ABBYY FineReader出现错误和警告提示的解决办法
DelegatingSerializationFilter 无法设置 ObjectFilter:空警告消息重复出现在控制台中