给定一个作为参数传递的函数,在对其求值之前是否有任何方法可以更改其输入参数字符串?
下面是我希望实现的伪代码:
test.func <- function(a, b) {
# here I want to alter the b expression before evaluating it:
b(..., val1=a)
}
给定传递给的函数调用
b
,我想添加
a
作为另一个参数,不需要总是指定
...
在
乙
打电话。所以这个的输出
test.func
电话应该是:
test.func(a="a", b=paste(1, 2))
"1" "2" "a"
编辑
:
我可以看到这样做的另一种方式是,如果我可以在父函数的范围内分配额外的参数(同样,作为伪代码);在这种情况下
一
将在T1和T2的范围内,但不全局分配:
t2 <- function(...) {
paste(a=a, ...)
}
t1 <- function(a, b) {
local( { a <<- a; b } )
}
t1(a="a", b=t2(1, 2))
这有点类似于curring,因为我将参数嵌套在函数本身中。
编辑2
:
只想再加一句话:我意识到一个相关的方法是
prototype-based programming
“这样事情就可以继承
the proto package
)但我希望在r中求值之前能有一种更简单的方法来改变输入参数。