2010-06-29 78 views
9

我遇到了一种情况,我需要将传递给R函数的所有额外参数并将它们滚动到对象中供以后使用。我认为功能previous question about ellipses会帮助我,但我仍然无法完全掌握如何做到这一点。下面是我想怎么做一个很简单的例子:R:使用省略号参数的列表

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

我已经尝试了一些在上面的例子中参数的个数不同的配方,并试图在返回调用unlisting ARGS。但我无法完成这项工作。有小费吗?

我知道我能做到这一点:

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

但我需要有...参数中的对象,我可以序列化和回读放到另一台机子。

+0

我完全误解了你的问题,所以我删除我的答案。添加一件事 - 只在需要的时候使用'substitute [-1L]'hack,如果你只需要值,那么'list(...)'就足够了,如果你想进一步传递参数, 。 – Marek 2010-06-30 06:53:19

回答

10

如何

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

最近你一直在帮助我!再次感谢。 – 2010-06-29 18:55:10

+0

@JD,我也在学习东西,试图回答你的问题。 – 2010-06-30 01:36:55

+1

为什么麻烦?一个简单的'list(...)'似乎可以解决这个问题。 – qed 2015-03-10 13:16:20