Ho fatto una domanda prima di circa How to take in text/character argument without quotes. Nello scenario che ho fornito in quella domanda, il numero di argomenti è fisso, quindi il numero di eval (sostituto()) che uso nella definizione della funzione corrisponde al numero di argomenti che ho.Utilizzare eval (sostituto()) su più espressioni
ora ho uno scenario in cui ho un argomento, ad esempio factors
(vedi sotto), e l'utente può specificare più nomi di colonna senza usare le virgolette intorno a loro - vale a dire, useranno factor1
invece di "factor1"
. E vorrei valutare ciascuno dei nomi di colonna forniti dall'utente.
foo<-function(data.frame, factors){
}
Domanda 1: Mi chiedo se c'è un modo per applicare eval (sostituto()) per molteplici espressioni quando il numero di espressioni può variare.
Come sottolineato, eval (sostituto()) può essere potenzialmente pericoloso e può fallire in determinate circostanze.
Domanda 2: è così c'è un modo più elegante per affrontare il problema sia quello di usare citato i nomi delle colonne come illustrato di seguito:
foo<-function(data.frame, factors){
output<-data.frame[, factors]
output
}
foo(data.frame=dataset, factors=c("factor1", "factor2"))