Voglio fornire una variabile facoltativa a una funzione, lasciare che le funzioni di verificare se questo argomento è stato fornito, e lasciare che si esegue il set corrispondente di calcoli. Pensavo di poter usare l'operatore '...' per quello.R: Trova le variabili in dotazione per le funzioni con il '...' argomento con exists()
L'esempio più semplice che posso pensare (che purtroppo non) è questo:
monkeyfun = function(...){
if (exists("monkey")){
return('monkey found')
} else {
return('monkey not found')
}
}
Ora monkeyfun(monkey=0)
così come monkeyfun()
entrambe ritorno "monkey not found"
.
Come controllo di integrità, la definizione di monkey = 1
al di fuori della funzione funziona e restituisce "monkey found"
.
La documentazione sull'argomento '...'
non mi aiuta veramente a comprendere questo problema e non sono riuscito a trovare una formulazione di questa domanda che fornisca risultati di corrispondenza qui (so che questa domanda è di base e molto probabilmente discussa da qualche parte) ...
Vorrei davvero apprezzare un po 'di aiuto con questo.
chiaramente la migliore opzione – BrodieG
stavo giocando intorno con 'hasArg()' solo ora ... ha mostrato il seguente comportamento imprevisto però ... prendere la seguente funzione: 'tfun = function (x = 0) {if (hasArg (name = 'x')) {print ('trovato')}} ' Se l'eseguo senza fornire' x' (che dovrebbe comunque far scattare il default) che non mi dice ' "trovato"'. – Affaeng
@Affaeng: perché è così inaspettato? Se chiami 'tfun()' senza argomenti, allora non c'è un argomento 'x' nella chiamata. Quindi 'hasArg (" x ")' restituisce correttamente 'FALSE'. È irrilevante che 'x' sia un argomento formale per' tfun'. Come menzionato nella sezione * Vedi anche * a '? HasArg', potresti voler leggere'? Missing'. –