Hadley Wickham最近在r-devel邮件列表上提出了一个有趣的问题,并且无法在StackOverflow上找到关于该主题的现有问题,我认为它也可能对它有用.
换句话说:
R函数由三个元素组成:参数列表,正文和环境.我们可以从这三个元素以编程方式构造函数吗?
(在上面的r-devel链接的主题结尾处得到了一个相当全面的答案.我将让其他人重新开放各种解决方案本身的基准并提供它作为答案,但一定要引用哈德利如果你这样做的话.如果没有人在几个小时内加强,我会自己做.)
我遇到了一种情况,我需要将所有额外的参数传递给R函数并将它们滚动到一个对象中供以后使用.我认为前面关于函数省略号的问题会对我有所帮助,但我仍然无法理解如何做到这一点.这是我想做的一个非常简单的例子:
newmean <- function(X, ...){
args <- as.list(substitute(list(...)))[-1L]
return(mean(X, args))
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中我尝试了许多不同的args配方,并在返回调用中尝试了未列出的args.但我无法做到这一点.有小费吗?
我意识到我可以这样做:
newmean <- function(X, ...){
return(mean(X, ...))
}
Run Code Online (Sandbox Code Playgroud)
但我需要在一个对象中有...参数,我可以将其序列化并读回另一台机器.