web-dev-qa-db-ja.com

警告メッセージは、警告とは無関係のチャンクで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)

私はその警告で大丈夫です。しかし、後で、最初のチャンク(ロードする場所)に1つの追加のライブラリーをロードすると思いました。そのチャンクを実行すると、次のようになります。

```{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とは関係のない他のチャンクでも見られます。警告が表示されると、しばらくは表示されなくなりますが、私がまだ予測できない瞬間に、最終的にはいずれかの時点で再び表示されます。

この動作の論理的な説明はありますか?あなたの助けをありがとう!

24
Javier Fajardo

消去するまで警告メッセージが表示されます。 warnings()関数を実行しても、それは行われません。警告をクリアするには、次のコマンドを実行します。

_assign("last.warning", NULL, envir = baseenv())
_

ただし、最善の方法は、警告が生成されないようにコードを修正することです。これに対処する1つの方法は、RでtryCatch()を使用することです。

supressWarnings()関数を使用してすべての警告を無効にすることもできますが、これにより警告が表示されなくなるためお勧めしません。

3
Katia

私の経験では、これが実行されなくても(たとえば、後で修正するために間違ったコードを残した場合でも)、コードにエラーが残っているときにRStudioでこれが発生します。関連する行を削除、変更、またはコメントに変換すると、この動作は終了します。これはRStudioインタープリターが原因であると思います。ベースRを使用している人々が同じ問題を抱えているかどうかを知ることは興味深いでしょう。

0
JASC