【发布时间】:2015-03-05 07:08:03
【问题描述】:
我在 R 中有一个使用 missing() 构造的低级函数,并且想使用一个向它传递一些参数的高级/包装器。
问题是即使用户没有在高层提供参数,低层函数也认为是给定的,见:
## low level:
foo_low <- function(x, argA, argB){
if(+missing(argA)) warning("argA was given")
if(+missing(argB)) warning("argB was given")
x+1
}
## wrapper/high level:
foo_high <- function(x, argA, argB){
foo_low(x=x, argA=argA, argB=argB)
}
## issue: low level will considere non missing even if missing at high level:
foo_high(2)
[1] 3
Warning :
1: In foo_low(x = x, argA = argA, argB = argB) : argA was given
2: In foo_low(x = x, argA = argA, argB = argB) : argB was given
我怎样才能优雅地解决这个问题?我可以检查高级函数内部是否调用,然后进行单独调用,但不是很优雅。我也可以使用 ...,但在我的情况下不实用。还有其他建议吗?谢谢!!
【问题讨论】:
-
这纯粹是一个
R问题,因此,它应该迁移到 StackOverflow。由于您已经分配了r标签,因此该问题应该得到适当的关注。 -
对不起!我该如何迁移到 StackOverflow?
-
完全没问题。我已经将此问题标记为迁移到 SO,因此 CV 版主将提供帮助。我稍后会尝试回答这个问题,如果我记得我是如何使用
missing()的(虽然没有承诺:-)。目前无法集中注意力 - 有点晚了。
标签: r