Diciamo che ho una funzione R in cui gli argomenti possono essere uno di alcuni valori denominati predefiniti (uno dei quali è l'impostazione predefinita) o un vettore di caratteri personalizzato. Come dovrei implementarlo senza fare affidamento su nomi di valori magici o su un'altra bandiera?Argomenti predefiniti della funzione e valori denominati
#allow use of predefined subsets or pass their own list
bratPack<-function(members='CORE',...){
if (members=='CORE')
members<-c('Emilio Estevez','Anthony Michael Hall','Rob Lowe','Andrew McCarthy','Demi Moore','Judd Nelson','Molly Ringwald','Ally Sheedy')
else if (members=='ALL')
members<-c('Emilio Estevez','Anthony Michael Hall','Rob Lowe','Andrew McCarthy','Demi Moore','Judd Nelson','Molly Ringwald','Ally Sheedy','James Spader','Robert Downey, Jr.','Jon Cryer', 'John Cusack', 'Kevin Bacon', 'Jami Gertz', 'Mary Stuart Masterson', 'Matthew Broderick', 'Sean Penn', 'Kiefer Sutherland')
...
}
Avendo scritto questo, non sono sicuro che tu voglia qualcosa per le opzioni "CORE" ', o' "ALL" 'o se vuoi memorizzare i due vettori di nomi da qualche parte. La mia risposta si rivolge alla prima, che è ciò a cui ho pensato quando ho letto il titolo della tua Q. –
Ho bisogno che accetti foo ("3rdRate"). Fondamentalmente mi sto chiedendo quale sia la convenzione per implementare questi tipi di sottoinsiemi predefiniti. –
@Gavin Non devi fare 'membri <- 'CORE'': se imposti' several.ok = T' in 'match.arg()'. Abbinerà solo il primo. O semplicemente 'match.arg (" CORE ")' senza specificare le opzioni fa lo stesso. Ho scelto di non specificare tutte le opzioni nella funzione, in quanto l'adattamento richiede ora solo l'adattamento della costante dataframe all'interno del pacchetto. Altrimenti dovrai adattare sia il frame dati che la funzione se vuoi aggiungere una nuova categoria. Una questione di design credo. Inoltre, l'utilizzo del costrutto try consente di specificare un vettore come richiesto dall'OP. –