2014-09-24 62 views
0

快速提问。我在R中编写了一些复杂的函数,并且出现了我想要使用的几个函数默认值(例如,nA = 5,nB = 5,nPos = 4,nNeg = 4)的情况。这些默认值是内置到函数中的,所以我不必指定它们,除非我想修改它们。但是,无论如何要在函数中做一些逻辑来看看它们是否被提及?例如,假设一个用户只能指定(nA = 3和nB = 5)...是否有办法从中获取数字8,因为它们在函数调用中被用户显式引用(如反对依靠默认值?)。测试是否使用默认参数或在函数调用中修改R

希望是有道理的。

+0

您可以使用您的变量函数中,如果用户没有指定他们,他们会得到默认值。那么,除此之外,你究竟需要什么? – 2014-09-24 08:37:24

+0

这些都很有帮助。我知道,默认值在未指定时设置。我想要的是告诉用户在函数调用中是否显式指定了参数而不是依赖于默认值。换句话说,函数是否有任何方法来判断在调用中是否指定了参数,而不是依赖默认值? (提示:一种解决方案可能是查看这些值是否处于默认值,但我希望进行逻辑测试以查看它们是否在通话中被提及)。 – tcarpenter 2014-09-26 05:43:37

回答

1

missing()

> f = function(a=1, b=2, c=3) missing(b) 
> f(1, c=3) 
[1] TRUE 
> f(1, 3) 
[1] FALSE 
+0

只要注意:在'?missing'上,“丢失(x)只有在x进入函数后没有改变时才可靠” – 2014-09-24 14:01:03

0
f <- function(a=2, b=3) { 
    "b" %in% names(as.list(match.call())) 
} 

f() 
#[1] FALSE 
f(b=1) 
#[1] TRUE 
0

罗兰的回答是更精确的,但也许你正在寻找的是

function(a=5) if(a !=5) print('hey, you changed a!') 
相关问题