【发布时间】:2015-09-09 11:38:29
【问题描述】:
我想构造一个函数(我们称之为 f()),它将作为参数两个 其他函数(f1(),f2())。 f1 和 f2 都有自己的参数。 我希望 f() 在评估 f1() 和 f2() 之前对传递的参数进行一些测试 以 f1() 和 f2() 为例,验证它们的名称是否相同。 简而言之,我想要这样的东西:
f<-function(f1(param),f2(param)){
f1Param<-#get the param argument of f1
f2Param<-#get the param argument of f2
stopifnot(identical(names(f1Param),names(f2Param)))
#evaluate f1(param) and f2(param) and do some opertaions on the outputs
}
但我不确定如何从 f1() 和 f2() 中提取参数然后获取它们 评估。 我看到了一些建议来解决这个问题match.call() 或mget()。 然而,在给出的例子中,被调用函数唯一要做的就是返回它的参数, 我实际上希望我的函数做一些事情。 有没有什么办法可以使用say, match.call() 来测试环境中的参数 调用函数(在我的示例中为 f()),然后决定是否基于评估 f1 和 f2 测试结果?
提前致谢
【问题讨论】:
-
在这种情况下,您最好修改您的 f() 以接受 4 个参数,这两个函数及其各自的参数(作为一个列表)。如果这是不可能的,我认为没有办法实现这一点,因为函数调用被延迟评估,你不能在函数调用本身之前真正访问它们