假设我有一个在R语言中接收多个参数的函数,我想通过设置某些参数为预先指定的值来将其缩减为较少参数的函数。我正在尝试弄清楚在R中最好的方法是什么。
例如,假设我有一个函数:
f <- function(a,b,c,d){a+b+c+d}
我希望创建或找到一个函数"partial",它能够实现以下功能:
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)
。 - Rich Scriven