2010-06-29 16 views
9

Ho incontrato una situazione in cui è necessario prendere tutti gli argomenti aggiuntivi passati a una funzione R e inserirli in un oggetto per un utilizzo futuro. Pensavo che lo previous question about ellipses funzioni mi aiutasse, ma non riesco ancora a capire come farlo. Ecco un esempio molto semplice di quello che vorrei fare:R: utilizzo di un elenco per gli argomenti dei puntini di sospensione

newmean <- function(X, ...){ 
    args <- as.list(substitute(list(...)))[-1L] 
    return(mean(X, args)) 
} 

Ho provato un certo numero di diverse formulazioni di args nell'esempio sopra e provato unlisting args nella chiamata di ritorno. Ma non posso farlo funzionare. Qualche consiglio?

mi rendo conto che avrei potuto fare questo:

newmean <- function(X, ...){ 
    return(mean(X, ...)) 
} 

Ma ho bisogno di avere le ... argomenti in un oggetto che posso serializzare e leggere di nuovo in un'altra macchina.

+0

ho completamente frainteso la tua domanda in modo elimino la mia risposta. Una cosa da aggiungere - usa 'substitute [-1L] 'hack solo quando è necessario, se hai bisogno di valori solo allora' list (...) 'è sufficiente, se vuoi passare gli argomenti più avanti poi passa come' ... ' . – Marek

risposta

10

Come su

newmean <- function(X, ...){ 
    args <- as.list(substitute(list(...)))[-1L] 
    z<-list(X) 
    z<-c(z,args) 
    do.call(mean,z) 
} 
+0

ultimamente mi stai aiutando molto! Grazie ancora. –

+0

@ JD, sto imparando anche a cercare di rispondere alle tue domande. –

+1

Perché il problema? Un semplice 'elenco (...)' sembra risolvere il problema. – qed

Problemi correlati