Métodos de enmascaramiento en R

Esta pregunta y en particularesta respuesta surgió la siguiente pregunta: ¿Cómo puedo obtener una advertencia sobre el enmascaramiento de los métodos en R?

Si ejecuta el siguiente código en una sesión limpia de R, notará que cargandodplyr cambia el método predeterminado paralag.

lag(1:3, 1)
## [1] 1 2 3
## attr(,"tsp")
## [1] 0 2 1
require(dplyr)
lag(1:3, 1)
## [1] NA  1  2

Si adjunta el paquetedplyr, recibe advertencias para varios objetos enmascarados, pero no hay advertencia sobre el método predeterminado paralag ser enmascarado La razón es que al llamarlag, la función genérica de lastats Se llama paquete.

lag
## function (x, ...) 
## UseMethod("lag")
## <bytecode: 0x000000000c072188>
## <environment: namespace:stats>

Ymethods(lag) solo me dice que hay un métodolag.default. Puedo ver que hay dos métodos usandogetAnywhere:

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

Pero esto requiere que sepa verificar si el valor predeterminadolag el método fue cambiado pordplyr. ¿Hay alguna forma de verificar si los métodos estaban enmascarados? Quizás haya una función como esta:

checkMethodMasking(dplyr)
## The following methods are masked from 'package:dplyr':
##    lag.default

NB: no es suficiente tener una advertencia cuando cargodplyr conrequire(dplyr). El método también se sobrecarga si solo cargo el espacio de nombres sin adjuntar el paquete (por ejemplo, llamodplyr::mutate, o incluso uso una función de otro paquete que llama a undplyr función que fue importada usandoimportFrom)

Respuestas a la pregunta(1)

Su respuesta a la pregunta