2010-06-29 5 views
9

Je me suis retrouvé dans une situation où j'ai besoin de prendre tous les arguments supplémentaires passés à une fonction R et de les rouler dans un objet pour une utilisation ultérieure. Je pensais que le previous question about ellipses dans les fonctions m'aiderait, mais je n'arrive toujours pas à comprendre comment faire cela. Voici un exemple très simple de ce que je voudrais faire:R: utilisation d'une liste pour les arguments de type ellipse

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

J'ai essayé un certain nombre de différentes formulations de args dans l'exemple ci-dessus et essayé dans la non-inscription args retour d'appel. Mais je ne peux pas faire ce travail. Des conseils?

Je me rends compte que je pouvais le faire:

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

Mais je dois avoir les arguments ... dans un objet que je peux sérialisation et lire dans une autre machine.

+0

je complètement mal compris votre question donc je supprimer ma réponse. Une chose à ajouter - utilisez le hack 'substitute [-1L]' seulement quand c'est nécessaire, si vous avez besoin de valeurs seulement alors 'list (...)' est suffisant, si vous voulez passer des arguments plus loin, passez comme '...' . – Marek

Répondre

10

Que diriez-vous

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

vous m'avez beaucoup aidé ces derniers temps! Merci encore. –

+0

@JD, j'apprends aussi des choses en essayant de répondre à vos questions. –

+1

Pourquoi le problème? Une simple liste (...) semble résoudre le problème. – qed

Questions connexes