随着我的项目变得越来越大,我发现很难跟踪所有参数。 R中是否有任何有效的方法,即结构中的聚合参数?
例如,在我的一个程序中,如果
take.bus = TRUE
然后将使用以下参数。
bus.number
bus.route
bus.stop
由于我的程序非常庞大,因此参数用法中有几个依赖于一个变量。当take.bus为FALSE时,我在想是否可以避免显示相关参数(即bus.number)。
我不确定这个问题是否适用于此。评论它是否偏离主题。
编辑:
更确切地说:考虑以下功能:
function(take.bus,bus.number, bus.route, bus.stop){
if(take.bus == T){
x<-temp.func(bus.number,bus.route,bus.stop)
}
}
因此,如果“take.bus == F”
,将不会使用任何辅助参数“bus.number,bus.route,bus.stop”。答案 0 :(得分:0)
如果在特定的函数调用中没有使用这三个参数,则不必提供它们,即f(FALSE)
不会引发错误。
这是R处理参数传递的一个特性,与其他流行语言略有不同。对于特定的函数调用,R不会评估提供的参数(缺少或不提供),除非实际需要执行该函数的参数。
答案 1 :(得分:0)
马修的答案在某些情况下有效,但你会发现如果你甚至在一个区块内使用参数,如果它们没有提供并且没有默认值,你将会收到错误。所以:
many <- function(one, two, three) {print (one);}
many("bob")
> "bob"
工作正常,但
more <- function(one, two, three) {
print (one)
if(!is.null(two)) {
print(two)
}
}
more("bob")
> [1] "bob"
> Error in is.null(two) : 'two' is missing
有问题。您可以为参数指定null的默认值,但是您需要实际传入参数。您可以使用ellipsis传递任意数量的参数(您可以选择命名它们)。检查省略号的界限有点棘手。有关详细信息,请参阅here。
另外。
请勿使用“T”和“F”!
我可以指定T <- FALSE
和F <- TRUE
,因为它们不是保留字。