Il pacchetto shiny
fornisce le funzioni utili validate()
e need()
per controllare che le variabili sono entrambi disponibili e validi. need()
valuta un'espressione. Se l'espressione non è valida, viene restituito un messaggio di errore. Se l'espressione è valida, viene restituito NULL
. Si può usare questo per verificare se una variabile è valida. Vedere ?need
per ulteriori informazioni.
Suggerisco definisce una funzione come questa:
is.valid <- function(x) {
require(shiny)
is.null(need(x, message = FALSE))
}
Questa funzione is.valid()
sarà tornare FALSE
se x
è FALSE
, NULL
, NA
, NaN
, una stringa vuota ""
, un vettore atomico vuoto, un vettore contenente solo valori mancanti, un vettore logico contenente solo FALSE
o un oggetto della classe try-error
. In tutti gli altri casi, restituisce TRUE
.
Ciò significa che need()
(e is.valid()
) copre una gamma molto ampia di casi di errore.Invece di scrivere:
if (!is.null(x) && !is.na(x) && !is.nan(x)) {
...
}
si può scrivere semplicemente:
if (is.valid(x)) {
...
}
Con l'assegno per la classe try-error
, può essere anche utilizzato in combinazione con un blocco try()
per catturare silenziosamente errori: (vedi https://csgillespie.github.io/efficientR/programming.html#communicating-with-the-user)
bad = try(1 + "1", silent = TRUE)
if (is.valid(bad)) {
...
}
Da dove proviene una variabile? è un elemento in un vettore, un argomento globale o non vettoriale di una funzione? Potrei avere più suggerimenti –
forse "esiste" è vicino a quello che stai cercando –
vedi il commento di Harlan sotto "esiste" ... –