warnings () no funciona dentro de una función? ¿Cómo se puede evitar esto?

op <- options(warn=0)  #although doesn't work for any value of warn
assign("last.warning", NULL, envir = baseenv())  
thisDoesntWork<- function() {
warning("HEY, this is definitely a warning!")
cat(paste("number of warnings:",length(warnings())))
}   
>thisDoesntWork()
Warning in thisDoesntWork() : HEY, this is definitely a warning!
number of warnings: 0

El número de advertencias debe ser 1 en lugar de 0: parece quewarnings() no devuelve nada si se llama dentro de una función. ¿Por qué? ¿Cómo se puede evitar esto para verificar dentro de una función si se produjeron advertencias e imprimirlas?

No quiero usartryCatch, porque luego pierdo el valor que devuelve la función (aún puede devolver un valor válido, incluso si generó una advertencia).

Respuestas a la pregunta(5)

Su respuesta a la pregunta