
284 | Capítulo 15: Funções
É muito trabalho extra para pouco ganho adicional. Um compromisso útil é o stopi-
fnot() incorporado; ele verifica se cada argumento é TRUE e produz uma mensagem
de erro genérica se não forem:
t_mean <- function( x, w, na.rm = FALSE ) {
stopifnot( is.logical( na.rm ), length( na.rm ) == 1
stopifnot( length(x) == length( w))
if ( na.rm ) {
miss <- is.na( x ) | is.na( w )
x <- x[ !miss ]
w <- w[ !miss ]
}
sum( w * x ) / sum( x )
n( 1:6, 6:1, na.rm = "foo" )
#> Error: is.logical(na.rm) is not TRUE
Note que ao usar stopifnot() você garante o que deve ser verdadeiro, em vez de ve-
rificar o que pode estar errado.
Reticências ...