この質問、特にこの回答は、次の質問を提起しました:Rのメソッドのマスキングに関する警告を取得するにはどうすればよいですか?
クリーンな R セッションで次のコードを実行すると、読み込みdplyr
によって の既定のメソッドが変更されることがわかりますlag
。
lag(1:3, 1)
## [1] 1 2 3
## attr(,"tsp")
## [1] 0 2 1
require(dplyr)
lag(1:3, 1)
## [1] NA 1 2
パッケージをアタッチするとdplyr
、いくつかのマスクされたオブジェクトに関する警告が表示されますが、マスクされるデフォルトの方法に関する警告は表示されませんlag
。その理由は、 を呼び出すときに、パッケージlag
のジェネリック関数が呼び出されるためです。stats
lag
## function (x, ...)
## UseMethod("lag")
## <bytecode: 0x000000000c072188>
## <environment: namespace:stats>
そしてmethods(lag)
、メソッドがあることを教えてくれますlag.default
。を使用した 2 つの方法があることがわかりますgetAnywhere
。
getAnywhere(lag.default)
## 2 differing objects matching ‘lag.default’ were found
## in the following places
## registered S3 method for lag from namespace dplyr
## namespace:dplyr
## namespace:stats
## Use [] to view one of them
lag
ただし、これには、デフォルトの方法が によって変更されたかどうかを確認する必要がありますdplyr
。メソッドがマスクされているかどうかを確認する方法はありますか? おそらく、次のような機能があります。
checkMethodMasking(dplyr)
## The following methods are masked from 'package:dplyr':
## lag.default
dplyr
注意: をロードするときに警告を表示するだけでは十分ではありませんrequire(dplyr)
。パッケージをアタッチせずに名前空間をロードしただけでも、メソッドはオーバーロードされます (たとえば、 を呼び出したり、 を使用してインポートされdplyr::mutate
た関数を呼び出す別のパッケージの関数を使用したりします)。dplyr
importFrom