warnings () não funciona em uma função? Como se pode contornar isso?

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

O número de avisos deve ser 1 em vez de 0 - parece quewarnings()&nbsp;não retorna nada se chamado dentro de uma função. Por quê? Como se pode contornar isso para verificar em uma função se ocorreram avisos e imprimi-los?

Eu não quero usartryCatch, porque então perco o valor que a função retorna (ela ainda pode retornar um valor válido, mesmo que tenha gerado um aviso).