2010-06-29 14 views
9

Me he encontrado con una situación en la que necesito tomar todos los argumentos adicionales pasados ​​a una función R y pasarlos a un objeto para su uso posterior. Pensé que el previous question about ellipses en funciones me ayudaría, pero todavía no puedo entender cómo hacerlo. Aquí es un ejemplo muy simple de lo que me gustaría hacer:R: utilizando una lista para argumentos de elipsis

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

He intentado un número de diferentes formulaciones de argumentos en el ejemplo anterior y trató unlisting argumentos en la llamada de retorno. Pero no puedo hacer que esto funcione. ¿Algun consejo?

que se dan cuenta de que podía hacer esto:

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

Pero tengo que tener los argumentos ... en un objeto que puedo serializar y leer de nuevo en otra máquina.

+0

no he entendido por completo su pregunta por lo borro mi respuesta. Una cosa para agregar - use 'substitute [-1L]' hack solo cuando sea necesario, si solo necesita valores entonces 'list (...)' es suficiente, si quiere pasar argumentos más adelante pase como '...' . – Marek

Respuesta

10

¿Qué tal

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

¡me has estado ayudando mucho últimamente! Gracias de nuevo. –

+0

@JD, también estoy aprendiendo cosas para tratar de responder a sus preguntas. –

+1

¿Por qué el problema? Una simple 'lista (...)' parece resolver el problema. – qed

Cuestiones relacionadas