【发布时间】:2015-11-17 09:08:23
【问题描述】:
假设我在 R 中有一个接受多个参数的函数,并且我想通过将一些参数设置为预先指定的值来将其简化为一个参数更少的函数。我试图弄清楚在 R 中最好的方法是什么。
例如,假设我有一个函数
f <- function(a,b,c,d){a+b+c+d}
我想创建或找到一个可以执行以下操作的函数部分
partial <- function(f, ...){
#fill in code here
}
new_f <- partial(f, a=1, c= 2)
new_f 将是 b 和 d 的函数,并将返回 1+b+2+d
在python中我会这样做
from functools import partial
def f(a,b,c,d):
return a+b+c+d
new_f = partial(f, a=1, c= 2)
我实际上是在重复这样做,所以我需要尽可能高效。谁能指出最有效的方法来做到这一点?现在我能做的最好的就是
partial <- function(f, ...){
z <- list(...)
formals(f) [names(z)] <- z
f
}
谁能告诉我更快的方法或最好的方法?这简直太慢了。
【问题讨论】:
-
您可以使用
formals(f)[c("a", "c")] <- list(1, 3)更改其形式参数或使用pryr::partial(f, a = 1, c = 2) -
谢谢。如果您作为答案发布,我会接受。 pryr 的部分是我想要的。
标签: r function partial-application